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.

questionAnswers(4)

yourAnswerToTheQuestion