Compartilhar via


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

Fornecer métodos de desserialização campos opcionais

Proteger os construtores de serialização