Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Özellik | Değer |
---|---|
Kural Kimliği | CA2237 |
Başlık | ISerializable türleri SerializableAttribute ile işaretleyin |
Kategori | Kullanım |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Dışarıdan görünen bir tür arabirimi uygular System.Runtime.Serialization.ISerializable ve tür özniteliğiyle System.SerializableAttribute işaretlenmez. Kural, temel türü serileştirilebilir olmayan türetilmiş türleri yoksayar.
Ortak dil çalışma zamanı tarafından serileştirilebilir olarak tanınması için, tür arabiriminin SerializableAttribute uygulanması aracılığıyla özel bir serileştirme yordamı kullansa bile türlerin ISerializable özniteliğiyle işaretlenmesi gerekir.
Bu kuralın ihlalini düzeltmek için özniteliğini SerializableAttribute türüne uygulayın.
Uygulama etki alanları arasında düzgün çalışabilmeleri için serileştirilebilir olmaları gerektiğinden, özel durum sınıfları için bu kuraldan gelen bir uyarıyı gizlemeyin.
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA2237
// The code that's violating the rule is on this line.
#pragma warning restore CA2237
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA2237.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Aşağıdaki örnekte kuralı ihlal eden bir tür gösterilmektedir. SerializableAttribute Kuralı karşılamak için öznitelik satırının açıklamasını kaldırın.
Imports System.Runtime.Serialization
Namespace ca2237
' <SerializableAttribute> _
Public Class BaseType
Implements ISerializable
Dim baseValue As Integer
Sub New()
baseValue = 3
End Sub
Protected Sub New(
info As SerializationInfo, context As StreamingContext)
baseValue = info.GetInt32("baseValue")
End Sub
Overridable Sub GetObjectData(
info As SerializationInfo, context As StreamingContext) Implements ISerializable.GetObjectData
info.AddValue("baseValue", baseValue)
End Sub
End Class
End Namespace
// [SerializableAttribute]
public class BaseType : ISerializable
{
int baseValue;
public BaseType()
{
baseValue = 3;
}
protected BaseType(
SerializationInfo info, StreamingContext context)
{
baseValue = info.GetInt32("baseValue");
}
public virtual void GetObjectData(
SerializationInfo info, StreamingContext context)
{
info.AddValue("baseValue", baseValue);
}
}
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolun