Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Properti | Nilai |
---|---|
ID Aturan | CA2235 |
Judul | Menandai semua bidang yang tidak dapat diserialisasikan |
Golongan | Penggunaan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
Bidang instans dari jenis yang tidak dapat diserialisasikan dideklarasikan dalam jenis yang dapat diserialisasikan.
Jenis yang dapat diserialisasikan adalah jenis yang ditandai dengan System.SerializableAttribute atribut . Saat jenis diserialisasikan, System.Runtime.Serialization.SerializationException pengecualian akan dilemparkan jika jenis berisi bidang instans jenis yang tidak dapat diserialisasikan dan tidak mengimplementasikan System.Runtime.Serialization.ISerializable antarmuka.
Tip
CA2235 tidak diaktifkan untuk bidang instans jenis yang diterapkan ISerializable karena mereka menyediakan logika serialisasi mereka sendiri.
Untuk memperbaiki pelanggaran aturan ini, terapkan System.NonSerializedAttribute atribut ke bidang yang tidak dapat diserialisasikan.
Hanya tekan peringatan dari aturan ini jika System.Runtime.Serialization.ISerializationSurrogate jenis dinyatakan yang memungkinkan instans bidang diserialisasikan dan dideserialisasi.
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA2235
// The code that's violating the rule is on this line.
#pragma warning restore CA2235
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA2235.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Contoh berikut menunjukkan dua jenis: satu yang melanggar aturan dan yang memenuhi aturan.
public class Mouse
{
int buttons;
string scanTypeValue;
public int NumberOfButtons
{
get { return buttons; }
}
public string ScanType
{
get { return scanTypeValue; }
}
public Mouse(int numberOfButtons, string scanType)
{
buttons = numberOfButtons;
scanTypeValue = scanType;
}
}
[Serializable]
public class InputDevices1
{
// Violates MarkAllNonSerializableFields.
Mouse opticalMouse;
public InputDevices1()
{
opticalMouse = new Mouse(5, "optical");
}
}
[Serializable]
public class InputDevices2
{
// Satisfies MarkAllNonSerializableFields.
[NonSerialized]
Mouse opticalMouse;
public InputDevices2()
{
opticalMouse = new Mouse(5, "optical");
}
}
Imports System
Imports System.Runtime.Serialization
Namespace ca2235
Public Class Mouse
ReadOnly Property NumberOfButtons As Integer
ReadOnly Property ScanType As String
Sub New(numberOfButtons As Integer, scanType As String)
Me.NumberOfButtons = numberOfButtons
Me.ScanType = scanType
End Sub
End Class
<SerializableAttribute>
Public Class InputDevices1
' Violates MarkAllNonSerializableFields.
Dim opticalMouse As Mouse
Sub New()
opticalMouse = New Mouse(5, "optical")
End Sub
End Class
<SerializableAttribute>
Public Class InputDevices2
' Satisfies MarkAllNonSerializableFields.
<NonSerializedAttribute>
Dim opticalMouse As Mouse
Sub New()
opticalMouse = New Mouse(5, "optical")
End Sub
End Class
End Namespace
Aturan CA2235 tidak menganalisis jenis yang mengimplementasikan ISerializable antarmuka (kecuali mereka juga ditandai dengan SerializableAttribute atribut ). Ini karena aturan CA2237 sudah merekomendasikan jenis penandaan yang mengimplementasikan ISerializable antarmuka dengan SerializableAttribute atribut .
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarang