【发布时间】:2015-07-24 17:51:00
【问题描述】:
假设我的 C# 程序中有以下 2 个类:
[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 字段 - str1、str2 和 str3 在输出中。
我对此很陌生,希望这应该很容易/只需要向序列化程序添加一个额外的输入(我尝试添加额外的 Base 类型,但仍然没有运气),但我无法弄清楚出来吧。
任何帮助将不胜感激!!!
谢谢!
【问题讨论】:
-
这涵盖了一些基本但相关的主题特定信息:msdn.microsoft.com/en-us/library/3z3z5s6h(v=vs.110).aspx
-
我无法重现您的问题;请参阅dotnetfiddle.net/greuFJ,它成功地序列化了所有 5 个字段。你能创建一个Minimal, Complete, and Verifiable example 吗?我的猜测是,您实际上是在序列化
List<Base>而没有意识到这一点。
标签: c# xml inheritance serialization