有什么方法可以指定xsi中使用的XML字符串:type =“”?

时间:2012-04-02 15:18:26

标签: c# xml-serialization xmlinclude

我有一个使用XMLSerialiser序列化为XML的类层次结构。为此,我使用[XmlInclude]声明所有具体类型。例如

 [XmlInclude(typeof(Derived))]
 public class Base
 {
 }

 public class Derived : Base
 {
 }

Derived的实例被序列化为:

<Base xsi:type="Derived" />

有没有办法将类型文本更改为类名以外的其他内容?例如:

<Base xsi:type="Fred" />

2 个答案:

答案 0 :(得分:2)

我认为你这样做:

[XmlType(TypeName = "Fred")]
public class Derived : Base
{
}

答案 1 :(得分:1)

使用XmlType attribute

[XmlInclude(typeof(Derived))]
public class Base
{
}

[XmlType("Fred")]
public class Derived : Base
{
}

使用xsi:type序列化程序序列化Derived对象时,这将为您提供所需的Base。我的测试程序输出:

<Base xsi:type="Fred"/>