C# 类型';X';和X';两者都使用XML类型名称&x27;X';,从名称空间'';。使用XML属性为类型指定唯一的XML名称和/或命名空间

C# 类型';X';和X';两者都使用XML类型名称&x27;X';,从名称空间'';。使用XML属性为类型指定唯一的XML名称和/或命名空间,c#,asp.net-mvc-3,xml-serialization,C#,Asp.net Mvc 3,Xml Serialization,当反序列化我的一个DTO时,我收到以下异常,有没有办法不用使用IXmlSerializable来解决这个问题? 类型“RRA.Core.Services.DataContracts.ReferenceData.Status”和“RRA.Core.Services.DataContracts.AR.Status”都使用来自命名空间“”的XML类型名“Status”。使用XML属性为该类型指定唯一的XML名称和/或命名空间 这是DTO: namespace RRA.Core.Services.Dat

当反序列化我的一个DTO时,我收到以下异常,有没有办法不用使用IXmlSerializable来解决这个问题?

类型“RRA.Core.Services.DataContracts.ReferenceData.Status”和“RRA.Core.Services.DataContracts.AR.Status”都使用来自命名空间“”的XML类型名“Status”。使用XML属性为该类型指定唯一的XML名称和/或命名空间

这是DTO:

namespace RRA.Core.Services.DataContracts.AR
{
    using System.Runtime.Serialization;

    /// <summary>
    /// Status data object
    /// </summary>
    [DataContract]
    public class Status : RRA.Core.Services.DataContracts.ReferenceData.Status
    {
    }
}
名称空间RRA.Core.Services.DataContracts.AR
{
使用System.Runtime.Serialization;
/// 
///状态数据对象
/// 
[数据合同]
公共类状态:RRA.Core.Services.DataContracts.ReferenceData.Status
{
}
}
****更新/解决方案****


修复了我遇到的特定问题。

您的两个类的名称完全相同。在C#中,这没关系,因为它们在不同的名称空间中-一个在RRA.Core.Services.DataContracts.AR中,另一个在RRA.Core.Services.DataContracts.ReferenceData中。您需要对XML做同样的事情


在这两个状态类上,设置DataContract属性的Namespace和Name属性以区分它们。

看这里,您是否尝试过按照它的要求执行操作,并添加xml属性以为每个属性提供唯一的名称和/或命名空间?另外:您是在使用
XmlSerializer
还是
DataContractSerializer
?这篇[post][1]为我解决了这个问题。[1] :修复了我遇到的特定问题。您所说的链接与此完全相同,只是它还更改了元素名称。您仍然可以使用DataContract属性并设置Namespace和Name属性以获得相同的结果。