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