Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化派生类不需要';t包括基类';领域_C#_Xml_Inheritance_Serialization - Fatal编程技术网

C# 序列化派生类不需要';t包括基类';领域

C# 序列化派生类不需要';t包括基类';领域,c#,xml,inheritance,serialization,C#,Xml,Inheritance,Serialization,假设我的C#程序中有以下两个类: 在我的程序中,我试图通过以下方式将列表序列化为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); } 列

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

在我的程序中,我试图通过以下方式将
列表
序列化为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);
}
列表序列化;
字符串路径;
...
var ser=新的XmlSerializer(typeof(List));
使用(var fs=new FileStream(路径,FileMode.Create))
{
序列序列化(fs,ToSerialize);
}
但是它没有在输出中拉入
Base
字段-
str1
str2
str3

我对这一点相当陌生,希望这应该很容易/只需要向序列化程序添加输入(我尝试添加额外的基类型,但仍然没有成功),但我无法理解它

任何帮助都将不胜感激


谢谢

这涵盖了一些基本但相关的特定主题信息:我无法重现你的问题;查看哪一个成功序列化了所有5个字段。你能创造一个新的世界吗?我的猜测是,您实际上正在序列化一个
列表
,而没有意识到它。
[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));
[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));