我怎样才能做到这一点?或者序列化程序会自动进行递归,并将所有这些子对象序列化为XML吗?
举个例子,如何序列化包含其他类对象的类本身!那是这个问题的核心!
我试过这个,并没有向目标XML文件输出任何内容(XML头除外).
我的问题是我需要序列化一个简单的类,它只包含一个List对象.但是,这些实体也是Lod 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();
}
Run Code Online (Sandbox Code Playgroud)
这是进行序列化的代码片段.
public class Map
{
internal string MapName;
internal string MapDescription;
internal string MapAuthor;
public List<Entity> Entities = new List<Entity>();
}
Run Code Online (Sandbox Code Playgroud)
这是序列化的类.如果从同一个程序集调用序列化,内部会被视为公共吗?代码在SavedMap.GetType()函数处抛出异常,我也尝试typeof(Map)过,但没有成功.我想这是因为我需要一些其他方法来处理每个新类(深度序列化)我该怎么做?
另外,我在一些例子中发现,没有接口继承或属性,因此我也没有添加它们,但我打算使用IXmlSerializable,虽然我不知道如何在WriteXML中调用另一个序列化实现.
我有以下需要反序列化/序列化的XML:
<instance>
<dog>
<items>
<item>
<label>Spaniel</label>
</item>
</items>
</dog>
<cat>
<items>
<item>
<label>Tabby</label>
</item>
</items>
</cat>
</instance>
Run Code Online (Sandbox Code Playgroud)
我无法改变XML结构.
我需要将它映射到以下类:
[Serializable, XmlRoot("instance")]
public class AnimalInstance
{
public string Dog { get; set; }
public string Cat { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果不手动解析XML,我不确定从哪里开始.我想让代码尽可能简短.有任何想法吗?(不,我的项目实际上并不涉及猫和狗).