2011-02-09 15 views
7

¿Puedo serializar un solo tipo/clase pero hay una manera en que puedo serializarlo también?Cómo XML serializar clase infantil con su clase base

Por ejemplo:

class B:A 

Aquí estoy capaz de serializar la clase B, pero ¿cómo puedo serializar la clase A?

+0

¿Cuál es exactamente la serialización de la clase base? Puedes ser mas preciso. – rene

+0

Su pregunta simple, si estoy serializando una clase secundaria, quiero que su clase base también se serialice con ella. – BreakHead

+0

Aunque sea una pregunta simple, no la expresa de manera precisa. ¿Qué se supone que significa "serializar con eso"? –

Respuesta

8

A hay que saber de antemano, es decir

[XmlInclude(typeof(B))] 
public class A {...} 


public class B {...} 

Ahora, un new XmlSerializer(typeof(A)) puede serializar un A o una B. También puede hacer esto sin atributos pasando un parámetro extraTypes al constructor sobrecargado XmlSerializer, pero nuevamente - la raíz debe ser A; es decir, new XmlSeralializer(typeof(A), new[] {typeof(B)})

+0

Once Again Thanx Marc – BreakHead

1

Su pregunta es muy vaga.

Puede lanzar su objeto a la clase base al serializar; sin embargo, cuando lo hace debe proporcionar los subtipos que A puede asumir al crear un serializador (new XmlSerializer(typeof(MyClass), ExtraTypesGoHere);), o usa [XmlInclude(Type type)] en las clases que puede tener propiedades que expongan objetos de esos subtipos.

Cuestiones relacionadas