从不同的程序集反序列化具有相同名称的类

时间:2011-09-20 11:51:51

标签: c# xml-serialization

我收到以下运行时错误:

  

类型'PaymentPortal.Payments.DataObjects.Address'和'OurWebApp.eProc.DataFormat.Entities.Address'都使用来自命名空间''的XML类型名称'Address'。使用XML属性为类型

指定唯一的XML名称和/或名称空间

两个类都有相同的名称。我需要反序列化包含OurWebApp.eProc.DataFormat.Entities.Address条目的请求。 我无法更改我需要反序列化的类的名称,原始类来自第三方提供的程序集。

有什么方法可以告诉(de)序列化程序将传入的'Address'解释为OurWebApp.eProc.DataFormat.Entities.Address的类型?

2 个答案:

答案 0 :(得分:2)

您应该能够在Address类上使用XmlType属性 - 这将告诉XML Schema使用“ReplaceWith”而不是“Address”

[XmlType(TypeName="ReplaceWith")]
public class Address
{
     //...etc
}

更多信息here

答案 1 :(得分:0)

您可以在Address类上指定命名空间吗?

[XmlType(Namespace = "http://OurWebApp.eProc.com")]
public class Address { }

这应该可以防止序列化中的任何冲突。