У меня есть версия 1.0 приложения с классом вроде:
class MyBaseDTO
{
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="Data")]
public byte[] Data{get;set}
}
и подкласс
class MySubDTO
{
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="MoreData")]
public byte[] MoreData{get;set}
}
теперь в версии 1.1 я хочу переместить MySubDTO.MoreData в MyBaseDTO.
Проблема в том, что когда я общаюсь с сервером 1.0 с клиентом 1.1, MoreData никогда не сериализуется, потому что XML выглядит так:
<a:MyBaseDTO i:type="b:MySubDTO"><a:Data>...</a:Data><b:MoreData>...</b:MoreData></a:MyBaseDTO>
Если я добавлю
class MyBaseDTO
{
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="Data")]
public byte[] Data(){get;set}
[XmlElementAttribute(DataType="base64Binary", IsNullable=true, ElementName="MoreData", NameSpace="MyBaseDTO")]
public byte[] MoreData(){get;set}
}
Конечно, это работает, но я бы хотел, чтобы можно было понять, что MoreData может иметь два разных пространства имен. Я использую WCF для связи между веб-сервисами и использую DataContractSerializer для сериализации объектов на стороне сервера. Можно ли это сделать?