CA2238: Prawidłowo zaimplementować Serializacja metod
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 System.Runtime.Serialization.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 metody klasy bazowej typy ISerializable
CA2240: Wdrożenie ISerializable poprawnie
CA2229: Konstruktory serializacji wdrożenie
CA2235: Oznaczyć wszystkie pola nie można serializować
CA2237: Typy ISerializable znak z SerializableAttribute