Serialisierungsmethoden korrekt implementieren?
Aktualisiert: November 2007
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
Kategorie |
Microsoft.Usage |
Unterbrechende Änderung |
Unterbrechend – Wenn die Methode außerhalb der Assembly sichtbar ist. Nicht unterbrechend – Wenn die Methode nicht außerhalb der Assembly sichtbar ist. |
Ursache
Eine Methode, die ein Serialisierungsereignis behandelt, verfügt nicht über die richtige Signatur, den richtigen Rückgabetyp oder die richtige Sichtbarkeit.
Regelbeschreibung
Einer Methode wird ein Serialisierungsereignishandler zugewiesen, indem eines der folgenden Serialisierungsereignisattribute angewendet wird:
Serialisierungsereignishandler nehmen einen einzelnen Parameter des Typs System.Runtime.Serialization.StreamingContext an, geben void zurück, und haben private-Sichtbarkeit.
Behandlung von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, korrigieren Sie die Signatur, den Rückgabetyp oder die Sichtbarkeit des Serialisierungsereignishandlers.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Das folgende Beispiel zeigt ordnungsgemäß deklarierte Serialisierungsereignishandler.
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) {}
}
}
Verwandte Regeln
Basisklassenmethoden in ISerializable-Typen aufrufen
ISerializable ordnungsgemäß implementieren
Serialisierungskonstruktoren implementieren
Alle nicht serialisierbaren Felder markieren
Markieren von ISerializable-Typen mit SerializableAttribute