我有两个DataContract
s,我使用DataContractSerializer
.
我为两个不同的 s 指定了不同的命名空间,DataContract
但是,DataMember
每个都有DataContract
一个相同的 POD 类型。此 POD 位于不同的 c# 命名空间中。
我想知道是否有一种方法可以指定用于此的命名空间,DataMember
具体取决于它所属的包含类型。
例如:
namespace NamespaceShared
{
using System.Runtime.Serialization;
[DataContract]
public sealed class SharedType
{
[DataMember(IsRequired = true)]
public int ValueOne { get; set; }
[DataMember(IsRequired = true)]
public int ValueTwo { get; set; }
}
}
namespace NamespaceOne
{
using System.Runtime.Serialization;
using NamespaceShared;
[DataContract(Namespace = "http://namespace.one")]
public sealed class DataContractOne
{
[DataMember(IsRequired = true)]
//[SomeNamespaceAttribute("http://namespace.one")]
private SharedType SharedValue { get; set; }
}
}
namespace NamespaceTwo
{
using System.Runtime.Serialization;
using NamespaceShared;
[DataContract(Namespace = "http://namespace.two")]
public sealed class DataContractTwo
{
[DataMember(IsRequired = true)]
//[SomeNamespaceAttribute("http://namespace.two")]
private SharedType SharedValue { get; set; }
}
}
我正在寻找可以提供上述SomeNamespaceAttribute
代码中的功能的东西。
注意:我不是在寻找如何更好地组织我DataContract
的 s 的建议,因为不幸的是我正在重构遗留代码并且 XML 格式无法更改。