Sdílet prostřednictvím


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

Deserialisierungsmethoden für optionale Felder angeben

Sichere Serialisierungskonstruktoren