CA2239: Poskytujte metody deserializace pro nepovinné pole

Zboží Hodnota
RuleId CA2239
Kategorie Microsoft.Usage
Změna způsobující chybu Nenarušující

Příčina

Typ obsahuje pole označené atributem System.Runtime.Serialization.OptionalFieldAttribute a typ neposkytuje metody zpracování událostí de-serializace.

Popis pravidla

Atribut OptionalFieldAttribute nemá žádný vliv na serializaci; pole označené atributem je serializováno. Pole je však ignorováno při de-serializaci a zachovává výchozí hodnotu přidruženou k jeho typu. Obslužné rutiny událostí de-serializace by měly být deklarovány pro nastavení pole během procesu de-serializace.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla, přidejte metody zpracování událostí de-serializace do typu.

Kdy potlačit upozornění

Je bezpečné potlačit upozornění z tohoto pravidla, pokud by mělo být pole ignorováno během procesu de-serializace.

Příklad

Následující příklad ukazuje typ s volitelným polem a metodou zpracování událostí de-serializace.

using System;
using System.Reflection;
using System.Runtime.Serialization;

[assembly: AssemblyVersionAttribute("2.0.0.0")]
namespace UsageLibrary
{
   [SerializableAttribute]
   public class SerializationEventHandlers
   {
      [OptionalFieldAttribute(VersionAdded = 2)]
      int optionalField = 5;

      [OnDeserializingAttribute]
      void OnDeserializing(StreamingContext context)
      {
         optionalField = 5;
      }

      [OnDeserializedAttribute]
      void OnDeserialized(StreamingContext context)
      {
         // Set optionalField if dependent on other deserialized values.
      }
   }
}

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

CA2240: Implementujte správně ISerializable

CA2229: Implementovat serializační konstruktory

CA2238: Implementujte správně metody serializace

CA2235: Označte všechna neserializovatelná pole

CA2237: Označte typy ISerializable pomocí SerializableAttribute

CA2120: Zabezpečte serializační konstruktory