Десериализовать классы с одинаковыми именами из разных сборок - PullRequest
2 голосов
/ 20 сентября 2011

Я получаю следующую ошибку во время выполнения:

Типы 'PaymentPortal.Payments.DataObjects.Address' и 'OurWebApp.eProc.DataFormat.Entities.Address' оба используют имя типа XML, 'Адрес', из пространства имен ''. Используйте атрибуты XML, чтобы указать уникальное имя XML и / или пространство имен для типа

Оба класса имеют одинаковые имена. Мне нужно десериализовать запрос, содержащий запись OurWebApp.eProc.DataFormat.Entities.Address. Я не могу изменить имя классов, которые мне нужно десериализовать, и исходный класс взят из сборки, предоставленной сторонней организацией.

Можно ли как-то сказать (де) сериализатору интерпретировать входящий 'Адрес' как тип OurWebApp.eProc.DataFormat.Entities.Address?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Вы должны иметь возможность использовать атрибут XmlType в своем классе Address - это скажет XML-схеме использовать «ReplaceWith» вместо «Address»

[XmlType(TypeName="ReplaceWith")]
public class Address
{
     //...etc
}

Дополнительная информация здесь

0 голосов
/ 20 сентября 2011

Можете ли вы указать пространство имен в вашем классе адресов?

[XmlType(Namespace = "http://OurWebApp.eProc.com")]
public class Address { }

Это должно предотвратить любые коллизии в сериализации.

...