Как я могу это сделать? Или сериализатор автоматически пойдет с рекурсией и сериализует все эти дочерние объекты в 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.