Udostępnij za pośrednictwem


CA2238: Należy poprawnie zaimplementować metody serializacji

TypeName

ImplementSerializationMethodsCorrectly

CheckId

CA2238

Kategoria

Microsoft.Usage

Zmiana kluczowa

Kluczowe - Jeśli metoda jest widoczna poza zestawem.

Niekluczowa - Jeśli metoda nie jest widoczna poza zestawem.

Przyczyna

Metoda, która obsługuje zdarzenie szeregowania nie ma poprawnej sygnatury zwracanego typu lub widoczności.

Opis reguły

Metoda wyznaczonych przez stosowanie jednej z następujących atrybutów zdarzeń serializacji obsługi zdarzeń serializacji:

Obsługa zdarzeń szeregowania pobiera jeden parametr o typie StreamingContext, zwraca void i ma widoczność private.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, popraw podpis, zwracany typ lub widoczność obsługi zdarzeń szeregowania.

Kiedy pomijać ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.

Przykład

Poniższy przykład pokazuje poprawnie zadeklarowaną obsługę zdarzeń szeregowania.

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

Powiązane reguły

CA2236: Wywołanie metod klasy podstawowej typu ISerializable

CA2240: Należy poprawnie zaimplementować ISerializable

CA2229: Należy zaimplementować konstruktory serializacji

CA2235: Należy oznaczyć wszystkie nieserializowane pola

CA2237: Należy oznaczyć typ ISerializable atrybutem SerializableAttribute

CA2239: Dostarcz metody deserializacji pól opcjonalnych

CA2120: Zabezpieczaj konstruktory serializacji