У меня есть два DataContract
s, которые я сериализую в XML, используя DataContractSerializer
.Изменение пространства имен XML для DataMember
Я указываю различное пространство имен для двух разных DataContract
s, однако в каждом есть 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
, потому что, к сожалению, я рефакторинг устаревшего кода, и формат XML не может быть изменен.
Можно ли переключиться на XmlSerializer? XmlElementAttribute имеет возможность указать пространство имен. –
К сожалению, нет. Но спасибо за это. – Nick
В чем причина изменения пространства имен? Что вы пытаетесь изменить? –