CA2238: Implementare correttamente i metodi di serializzazione

Articolo Valore
ID regola CA2238
Category Microsoft.Usage
Modifica Interruzione: se il metodo è visibile all'esterno dell'assembly.

Non di rilievo: se il metodo non è visibile all'esterno dell'assembly.

Causa

Un metodo che gestisce un evento di serializzazione non dispone della visibilità, del tipo restituito o della firma corretta.

Descrizione regola

Un metodo è designato un gestore eventi di serializzazione applicando uno degli attributi dell'evento di serializzazione seguenti:

Come correggere le violazioni

Per correggere una violazione di questa regola, correggere la firma, il tipo restituito o la visibilità del gestore eventi di serializzazione.

Quando eliminare gli avvisi

Non escludere un avviso da questa regola.

Esempio

L'esempio seguente mostra i gestori eventi di serializzazione dichiarati correttamente.

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

CA2236: Chiamare metodi della classe base su tipi ISerializable

CA2240: Implementare ISerializable in modo corretto

CA2229: Implementare costruttori di serializzazione

CA2235: Contrassegnare tutti i campi non serializzabili

CA2237: Contrassegnare i tipi ISerializable con SerializableAttribute

CA2239: Specificare metodi di deserializzazione per i campi facoltativi

CA2120: Proteggere i costruttori di serializzazione