序列化派生类不包括基类'字段

时间:2015-07-24 17:51:01

标签: c# xml inheritance serialization

假设我的C#程序中有以下两个类:

[Serializable]
public class Base
{
    public string str1;
    public string str2;
    public string str3;
}

[Serializable]
public class  Derived : Base
{
    public string str4;
    public string str5;
}

而且,在我的程序中,我试图通过以下方式将List<Derived>序列化为XML:

List<Derived> ToSerialize;
string path;
...
var ser = new XmlSerializer(typeof(List<Derived>));
using (var fs = new FileStream(path, FileMode.Create))
{
    ser.Serialize(fs, ToSerialize);
}

但它并没有拉出输出中的Base字段 - str1str2str3

我对此很新,并希望这应该很简单/只需要对序列化程序添加一个输入(我尝试添加额外的Base类型,但仍然没有运气),但我只是无法计算它出来了。

任何帮助都会非常感激!!!

谢谢!

1 个答案:

答案 0 :(得分:0)

[XmlInclude(typeof(Derived))]
[Serializable]
public class Base
{
    public string str1;
    public string str2;
    public string str3;
}

[Serializable]
public class  Derived : Base
{
    public string str4;
    public string str5;
}

....

var ser = new XmlSerializer(typeof(Base));