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:
System.Runtime.Serialization.OnDeserializedAttribute
Los controladores de eventos de serialización toman un único parámetro de tipo System.Runtime.Serialization.StreamingContext, devuelven
void
y tienen visibilidadprivate
.
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) {}
}
}
Reglas relacionadas
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de