CA2238: Implementar métodos de serialização corretamente
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Dividindo - se o método é visível fora do assembly. Não separável - se o método não é visível fora do assembly. |
Causa
Um método que manipula o evento de serialização não tem a assinatura correta, retornar o tipo ou a visibilidade.
Descrição da regra
Um método é designado um manipulador de eventos de serialização aplicando um dos seguintes atributos de evento de serialização:
Os manipuladores de eventos de serialização levar a um único parâmetro do tipo System.Runtime.Serialization.StreamingContext, retorno voide tem private visibilidade.
Como corrigir violações
Para corrigir uma violação desta regra, corrija a assinatura, o tipo de retorno ou a visibilidade do manipulador de eventos de serialização.
Quando suprimir avisos
Não suprimir um aviso da regra.
Exemplo
O exemplo a seguir mostra a serialização declarada corretamente manipuladores de eventos.
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) {}
}
}
Regras relacionadas
CA2236: Chamar métodos da classe base nos tipos de ISerializable
CA2240: Implementa ISerializable corretamente
CA2229: Implementar os construtores de serialização
CA2235: Marcar todos os campos não serializáveis
CA2237: Tipos de ISerializable de marca com o SerializableAttribute
CA2239: Fornecer métodos de desserialização de campos opcionais