Implementar métodos de serialização corretamente
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
Category (Categoria) |
Microsoft.uso |
Quebrando alterar |
Dividindo - se o método estiver visível fora do assembly. Não separável - se o método não estiver visível fora do assembly. |
Causa
Um método que manipula um 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:
Serialização evento manipuladores de levar um único parâmetro do tipo System.Runtime.Serialization.StreamingContext, retornar voide ter private visibilidade.
Como corrigir violações
Para corrigir uma violação dessa regra, corrija a assinatura, o tipo de retorno ou a visibilidade do manipulador de evento 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
Chamar métodos da classe base em tipos ISerializable
Implementar ISerializable corretamente
Implementar construtores de serialização
Marcar todos os campos não serializáveis
Tipos ISerializable marcar com o SerializableAttribute