如何做到这一点?或者序列化程序是否会自动进行递归,并将所有子对象序列化为 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实现中调用另一个序列化。
[XmlInclude]
。 - Marc Gravell[XmlSerializer]
仅作用于公共字段/属性(从不作用于内部)。 - Marc Gravell