XML序列化/反序列化名称和继承

时间:2012-01-31 18:59:39

标签: .net xml-serialization

我在反序列化期间遇到以下错误:

类型'MyLib.Xml.CompanyDetails'和'MyApp.Web.Models.CompanyDetails'都使用名称空间“http://xml.domain.com/schema”中的XML类型名称“CompanyDetails”。使用XML属性为类型指定唯一的XML名称和/或命名空间。

我可以使用不同的类名来解决问题,如下所示,但我不想......

[XmlRoot(ElementName = "CompanyDetails", Namespace = "http://xml.domain.com/schema/schema")]
public class CompanyDetailsXX : MyLib.Xml.CompanyDetails

我使用继承,因为我无法更改基类并需要添加额外的属性(在反序列化期间不会填充)

我希望base和parent类具有相同的名称,因为它有意义:

[XmlRoot(ElementName = "CompanyDetails", Namespace = "http://xml.domain.com/schema/schema")]
    public class CompanyDetails : MyLib.Xml.CompanyDetails

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要为子类型指定不同的XML元素名称。

您在C#中为您的子类创建了一个不同的类名,不是吗?相同的要求适用于XML类型。 XML子类型不能与其父类型相同。

当父对象和子对象都被流式传输到XML时尤其如此,正如您发布的错误消息所示。