Как сериализовать класс, содержащий объекты других классов (рекурсивная сериализация?)

Как я могу это сделать? Или сериализатор автоматически пойдет с рекурсией и сериализует все эти дочерние объекты в XML?

Приведите пример, как бы вы сериализовали классы, которые содержат в себе объекты других классов! Это было ядром этого вопроса!

Я пробовал это, и это не выводилочто-нибудь (кроме заголовка XML) в целевой файл XML.

Моя проблема в том, что мне нужно сериализовать простой класс, который просто содержит объект List. Но эти сущности также содержат объекты List. (Другим плюсом было бы, если бы я мог избежать сериализации некоторых компонентов, потому что некоторые являются производными и имеют словари в них).

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();
}

Это кусок кода, который выполняет сериализацию.

public class Map
{
    internal string MapName;
    internal string MapDescription;
    internal string MapAuthor;
    public List<Entity> Entities = new List<Entity>();
}

И это класс, который сериализован.Могут ли внутренние компоненты считаться открытыми, если сериализация вызывается из одной и той же сборки? Код вызывает исключение наSavedMap.GetType() функция, и я попробовалtypeof(Map) тоже, но безуспешно. Я думаю, это потому, что мне нужен какой-то другой способ обработки каждого нового класса (глубокая сериализация), как мне это сделать?

Кроме того, я обнаружил на некоторых примерах, что нет наследования интерфейса или атрибутов, поэтому я тоже не добавил их, но я планирую использовать IXmlSerializable, хотя я не знаю, как вызвать другую сериализацию внутри WriteXML реализация.

Ответы на вопрос(4)

Ваш ответ на вопрос