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.
}
}
}
Související pravidla
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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro