2011-10-04 13 views
5

Duplicar posibles:
Serializable InheritanceC# serialización/Herencia

Es serialización heredable?

Ejemplo:

[Serializable] 
class A 
{ 
} 

class B : A 
{ 
} 

Si trato de serializar/deserializar una instancia de la clase B, consigo una excepción que indica que la clase no está marcado como serializable. Por lo tanto, la pregunta: ¿la serialización es heredable? ¿Me estoy perdiendo de cómo hacerlo, o todas las clases que necesitan ser serializadas requieren que se marquen explícitamente como tales?

Respuesta

11

Es not inheritable:

Es importante tener en cuenta que el atributo Serializable no se puede heredar. Si deriva una nueva clase de MyObject, la nueva clase también debe estar marcada con el atributo o no puede ser serializada.

Deberá marcar la subclase, así para que sea serializable:

[Serializable] 
class B : A { } 
+2

nota Menor; * en este caso *, la propiedad 'Heredada' de este atributo no es directamente relevante (aunque sucede que es correcta). Esto se debe a que en la capa de metadatos, '[Serializable]' está *** no *** implementado como un atributo, pero como un indicador de clase CLI (puede verificar esto en la secuencia IL). –

+1

Gracias por la nota de Marc, seguramente no es de menor importancia. –

+0

@Marc Gravell: Cambió el texto y eliminó esa referencia de propiedad ... Gracias –