相关疑难解决方法(0)

如何序列化包含其他类对象的类(递归序列化?)

我怎样才能做到这一点?或者序列化程序会自动进行递归,并将所有这些子对象序列化为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中调用另一个序列化实现.

.net c# xml serialization xml-serialization

15
推荐指数
2
解决办法
4万
查看次数

XML序列化查询

我有以下需要反序列化/序列化的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,我不确定从哪里开始.我想让代码尽可能简短.有任何想法吗?(不,我的项目实际上并不涉及猫和狗).

.net c# xml serialization xml-serialization

2
推荐指数
1
解决办法
372
查看次数

标签 统计

.net ×2

c# ×2

serialization ×2

xml ×2

xml-serialization ×2