Como serializar uma classe que contém objetos de outras classes (serialização recursiva?)
Como posso fazer isso? Ou o serializador irá automaticamente com recursão e serializará todos esses objetos filhos em XML?
Dê-me um exemplo, como serializar classes que contêm os objetos de outras classes em si! Esse foi o cerne desta questão!
Eu tentei isso e não saiuqualquer coisa (exceto o cabeçalho XML) no arquivo XML de destino.
Meu problema é que eu preciso serializar uma classe simples, que apenas contém um objeto List. Mas essas entidades também possuem objetos de lista. (Outra vantagem seria se eu pudesse evitar a serialização de alguns componentes, porque alguns são derivados e possuem dicionários).
public void SaveCurrent(string MapFileName)
{
string MapPath = world_.game_.Content.RootDirectory + "/Maps/" + MapFileName + ".xml";
StreamWriter MapWriter = new StreamWriter(MapPath);
Map SavedMap = new Map();
SavedMap.Entities = world_.Entities;
XmlSerializer xSerializer = new XmlSerializer(SavedMap.GetType());
xSerializer.Serialize(MapWriter, SavedMap);
MapWriter.Close();
}
Esse é o pedaço de código que faz a serialização.
public class Map
{
internal string MapName;
internal string MapDescription;
internal string MapAuthor;
public List<Entity> Entities = new List<Entity>();
}
E esta é a classe que é serializada.Os internos poderiam ser contados como públicos, se a serialização for chamada do mesmo assembly? O código lança uma exceção noSavedMap.GetType()
função, e eu tenteitypeof(Map)
também, mas sem sucesso. Acho que é porque preciso de outra maneira de lidar com cada nova classe (serialização profunda). Como faço isso?
Além disso, descobri em alguns exemplos que não há herança ou atributos de interface; portanto, também não os adicionei, mas planejo usar IXmlSerializable, embora não saiba como chamar outra serialização no WriteXML. implementação.