gpt4 book ai didi

c# - XML 序列化 : The type of the argument object 'Sw' is not primitive

转载 作者:行者123 更新时间:2023-11-30 13:46:29 24 4
gpt4 key购买 nike

我正在尝试将对象序列化为 XML 文件,但出现上述错误。

问题似乎与包含基类列表但由从基类派生的对象填充的对象有关。

示例代码如下:

public class myObject
{
public myObject()
{
this.list.Add(new Sw());
}

public List<Units> list = new List<Units>();
}

public class Units
{
public Units()
{
}
}

public class Sw : Units
{
public Sw();
{
}

public void main()
{
myObject myObject = new myObject();
XmlSerializer serializer = new XmlSerializer(typeof(myObject));
TextWriter textWriter = new StreamWriter ("file.xml");
serializer.Serialize (textWriter, myObject);
}

例如仅包含 List<Units> 的对象它由继承自 Units 的派生对象填充类(Sw)。

很抱歉没有提供我的实际代码,但是所涉及的对象非常复杂,这似乎是对象中唯一无法成功序列化的部分——而且只有当列表包含派生类时。

如何正确序列化这样的类?

最佳答案

XmlInclude 属性标记 Units 类,将派生类作为参数传递:

[XmlInclude(typeof(Sw))]
public class Units
{
public Units()
{
}
}

关于c# - XML 序列化 : The type of the argument object 'Sw' is not primitive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20917831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com