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