我有兩個DataContract
s,我使用DataContractSerializer
序列化爲XML。更改DataMember的XML命名空間
我爲兩個不同的DataContract
s指定了不同的名稱空間,但是,每個DataContract
中都有一個DataMember
,它們具有相同的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格式無法更改。
是否可以切換到XmlSerializer? XmlElementAttribute有一個選項來指定命名空間。 –
不幸的不是。但是,謝謝你指出這一點。 – Nick
想要更改命名空間的原因是什麼?你想改變什麼? –