gpt4 book ai didi

c# - 具有派生类型的 XML 序列化

转载 作者:行者123 更新时间:2023-12-02 09:37:27 34 4
gpt4 key购买 nike

我在让我的序列化器工作时再次遇到问题。我有一个基类 A 和一个派生类 B:

class Program
{
static void Main(string[] args)
{
A foo = new B();

// determine that the class B overrides A
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
overrides.Add(typeof(A), new XmlAttributes
{
XmlElements = { new XmlElementAttribute("B", typeof(B)) }
});

XmlSerializer ser = new XmlSerializer(typeof(A), overrides);
ser.Serialize(new XmlTextWriter("test.xml", Encoding.Default), foo);

}
}

public class A { public int a;}
public class B : A { public int b;}

但是当我运行这个小程序时,我遇到了异常

XmlRoot and XmlType attributes may not be specified for the type ConsoleApplication1.A

但我从未确定 A 类的根或类型属性,所以我对此消息感到非常困惑。有什么幕后我必须指定的吗?我想要做的就是序列化 B 的实例,只需向 A 的定义添加一些属性...

最佳答案

它就在您收到的错误消息中。

XmlRoot and XmlType attributes may not be specified for the type ConsoleApplication1.A

您必须为输出 xml 文档指定根元素。

替换

overrides.Add(typeof(A), new XmlAttributes

overrides.Add(typeof(A), "node", new XmlAttributes

而且您可能还必须更换

new XmlSerializer(typeof(A), overrides);     

new XmlSerializer(typeof(B), overrides);

有关覆盖的更多信息和示例,请访问 MSDN .

关于c# - 具有派生类型的 XML 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20047761/

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