CA2238: Implementar métodos de serialização corretamente
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
Category (Categoria) |
Microsoft.Usage |
Alteração Significativa |
Quebra - se o método é visível fora do assembly. Sem quebra - se o método não está visível fora do assembly. |
Causa
Um método que manipula um evento de serialização não possui a assinatura, o tipo de retorno ou a visibilidade corretos.
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 recebem um único parâmetro do tipo System.Runtime.Serialization.StreamingContext, retorna void e tem a visibilidade private .
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 Alertas
Não elimine um alerta desta regra.
Exemplo
O exemplo a seguir mostra manipuladores de eventos de serialização declarados corretamente.
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 os métodos de classe base nos tipos de ISerializable
CA2240: ISerializable de implementar corretamente
CA2229: Construtores de serialização de implementar
CA2235: Marcar todos os campos não serializáveis
CA2237: Os tipos ISerializable da marca com o SerializableAttribute
CA2239: Fornecer métodos para os campos opcionais de desserialização