CA2238: Implementar métodos de serialización correctamente

Elemento Valor
RuleId CA2238
Category Microsoft.Usage
Cambio importante Problemático: si el método es visible fuera del ensamblado.

No problemático: si el campo no es visible fuera del ensamblado.

Causa

Un método que controla un evento de serialización no especifica la firma correcta, el tipo de valor devuelto ni la visibilidad.

Descripción de la regla

Un método se designa como controlador de eventos de serialización aplicando uno de los siguientes atributos de evento de serialización:

Cómo corregir infracciones

Para corregir una infracción de esta regla, corrija la firma, el tipo de valor devuelto o la visibilidad del controlador de eventos de serialización.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla.

Ejemplo

En el ejemplo siguiente se muestran los controladores de eventos de serialización declarados correctamente.

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) {}
   }
}

CA2236: Llamar a métodos de clase base en tipos ISerializable

CA2240: Implementar ISerializable correctamente

CA2229: Implementar constructores de serialización

CA2235: Marcar todos los campos no serializables

CA2237: Marcar los tipos ISerializable con SerializableAttribute

CA2239: Proporcionar métodos de deserialización para campos opcionales

CA2120: Proteger los constructores de serializaciones