【问题标题】:Types 'X' and X' both use the XML type name, 'X', from namespace ''. Use XML attributes to specify a unique XML name and/or namespace for the type类型 'X' 和 X' 都使用来自命名空间 '' 的 XML 类型名称 'X'。使用 XML 属性为类型指定唯一的 XML 名称和/或命名空间
【发布时间】:2012-08-29 13:16:42
【问题描述】:

我在反序列化我的一个 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
    {
    }
}

****更新/解决方案****

This 解决了我遇到的特定问题。

【问题讨论】:

  • 您是否尝试过按照它的要求进行操作,并添加 xml 属性以赋予它们每个唯一的名称和/或命名空间?另外:您使用的是XmlSerializer 还是DataContractSerializer
  • 这个 [post][1] 为我解决了这个问题。 [1]:stackoverflow.com/questions/8946405/…
  • This 修复了我遇到的特定问题。

标签: c# asp.net-mvc-3 xml-serialization


【解决方案1】:

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

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

【讨论】:

  • 您所说的链接与此完全相同,此外它还更改了元素名称。您仍然可以使用 DataContract 属性并设置 Namespace 和 Name 属性以获得相同的结果。
猜你喜欢
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多