Sdílet prostřednictvím


CA2238: Implementujte správně metody serializace

TypeName

ImplementSerializationMethodsCorrectly

CheckId

CA2238

Kategorie

Microsoft.Usage

Narušující změna

Rozdělení - metoda je viditelná vně sestavení.

Bez přerušení - Není-li metoda viditelná vně sestavení.

Příčina

Metoda, která zpracovává události serializace nemá správný podpis, typ nebo viditelnost.

Popis pravidla

Metoda je určena k obslužné rutině události serializace použitím následujících atributů serializace událostí:

Obslužné rutiny událostí serializace přebírají jeden parametr typu StreamingContext, vrací void a má private viditelnost.

Jak vyřešit porušení

Pro vyřešení porušení tohoto pravidla opravte podpis, návratový typ nebo viditelnost obslužné rutiny události serializace.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Příklad

Následující příklad ukazuje správně nadeklarované obslužné rutiny událostí serializace.

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) {}
   }
}

Související pravidla

CA2236: Volejte metody třídy Base na typech ISerializable

CA2240: Implementujte správně ISerializable

CA2229: Implementovat serializační konstruktory

CA2235: Označte všechna neserializovatelná pole

CA2237: Označte typy ISerializable pomocí SerializableAttribute

CA2239: Poskytujte metody deserializace pro nepovinné pole

CA2120: Zabezpečte serializační konstruktory