CA2238: Serialisierungsmethoden korrekt implementieren
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
Kategorie (Category) |
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 StreamingContext an, geben void zurück, und haben private-Sichtbarkeit.
Behandeln 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
CA2236: Basisklassenmethoden auf ISerializable-Typen aufrufen
CA2240: ISerializable ordnungsgemäß implementieren
CA2229: Serialisierungskonstruktoren implementieren
CA2235: Alle nicht serialisierbaren Felder markieren
CA2237: Markieren von ISerializable-Typen mit SerializableAttribute
CA2239: Deserialisierungsmethoden für optionale Felder angeben