我在反序列化期间遇到以下错误:
类型'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
有什么想法吗?
答案 0 :(得分:0)
您需要为子类型指定不同的XML元素名称。
您在C#中为您的子类创建了一个不同的类名,不是吗?相同的要求适用于XML类型。 XML子类型不能与其父类型相同。
当父对象和子对象都被流式传输到XML时尤其如此,正如您发布的错误消息所示。