Implementare correttamente i metodi di serializzazione
Aggiornamento: novembre 2007
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
Category |
Microsoft.Usage |
Breaking Change |
Sostanziale - Se il metodo è visibile all'esterno dell'assembly. Non sostanziale - Se il metodo non è visibile all'esterno dell'assembly. |
Causa
Un metodo che gestisce un evento di serializzazione non dispone della visibilità, del tipo restituito o della firma corretta.
Descrizione della regola
Un metodo viene designato come gestore eventi di serializzazione mediante l'applicazione di uno degli attributi degli eventi di serializzazione riportati di seguito:
I gestori eventi di serializzazione utilizzano un parametro di tipo System.Runtime.Serialization.StreamingContext, restituiscono void e hanno visibilità private.
Correzione di violazioni
Per correggere una violazione di questa regola, correggere la firma, il tipo restituito o la visibilità del gestore eventi di serializzazione.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio riportato di seguito vengono illustrati gestori eventi di serializzazione dichiarati correttamente.
Imports System
Imports System.Runtime.Serialization
Namespace UsageLibrary
<SerializableAttribute> _
Public Class SerializationEventHandlers
<OnSerializingAttribute> _
Private Sub OnSerializing(context As StreamingContext)
End Sub
<OnSerializedAttribute> _
Private Sub OnSerialized(context As StreamingContext)
End Sub
<OnDeserializingAttribute> _
Private Sub OnDeserializing(context As StreamingContext)
End Sub
<OnDeserializedAttribute> _
Private Sub OnDeserialized(context As StreamingContext)
End Sub
End Class
End Namespace
using System;
using System.Runtime.Serialization;
namespace UsageLibrary
{
[SerializableAttribute]
public class SerializationEventHandlers
{
[OnSerializingAttribute]
void OnSerializing(StreamingContext context) {}
[OnSerializedAttribute]
void OnSerialized(StreamingContext context) {}
[OnDeserializingAttribute]
void OnDeserializing(StreamingContext context) {}
[OnDeserializedAttribute]
void OnDeserialized(StreamingContext context) {}
}
}
Regole correlate
Chiamare metodi della classe base su tipi ISerializable
Implementare ISerializable in modo corretto
Implementare costruttori di serializzazione
Contrassegnare tutti i campi non serializzabili
Contrassegnare i tipi ISerializable con SerializableAttribute