Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
Nombre de tipo |
ImplementSerializationMethodsCorrectly |
Identificador de comprobación |
CA2238 |
Categoría |
Microsoft.Usage |
Cambio problemático |
Problemático: si el método es visible fuera del ensamblado. No problemático: si el método no es visible fuera del ensamblado. |
Motivo
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
Se designa un controlador de eventos de serialización a un método aplicando uno de los atributos de evento de serialización siguientes:
Los controladores de eventos de serialización toman un parámetro único de tipo System.Runtime.Serialization.StreamingContext, devuelven void y tienen la visibilidad private.
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 advertencias
No suprima las advertencias de esta regla.
Ejemplo
El ejemplo siguiente muestra los controladores de eventos de serialización correctamente declarados.
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) {}
}
}
Reglas relacionadas
Llamar a métodos de clase base en tipos ISerializable
Implementar ISerializable correctamente
Implementar constructores de serialización
Marcar todos los campos no serializables
Marcar los tipos ISerializable con SerializableAttribute
Proporcionar métodos de deserialización para campos opcionales