Имена сериализации / десериализации XML и наследование - PullRequest
1 голос
/ 31 января 2012

Я получаю следующую ошибку при десериализации:

Типы 'MyLib.Xml.CompanyDetails' и 'MyApp.Web.Models.CompanyDetails' оба используют имя типа XML, 'CompanyDetails', из пространства имен 'http://xml.domain.com/schema'. Использование атрибутов XML для указания уникального имени XML и / или пространство имен для типа.

Я могу решить проблему, используя разные имена классов, как показано ниже, но я не хочу ...

[XmlRoot(ElementName = "CompanyDetails", Namespace = "http://xml.domain.com/schema/schema")]
public class CompanyDetailsXX : MyLib.Xml.CompanyDetails

Я использую наследование, так как не могу изменить базовый класс и мне нужно добавить дополнительные свойства (не заполняются во время десериализации)

Я хочу, чтобы базовый и родительский класс имели одинаковые имена, поскольку это имеет смысл, например:

[XmlRoot(ElementName = "CompanyDetails", Namespace = "http://xml.domain.com/schema/schema")]
    public class CompanyDetails : MyLib.Xml.CompanyDetails

Есть идеи?

1 Ответ

0 голосов
/ 31 января 2012

Вам необходимо указать другое имя элемента XML для вашего дочернего типа.

Вы создали другое имя класса для своего дочернего класса в C #, не так ли? То же самое требование относится к типам XML. Дочерний тип XML не может иметь того же имени, что и его родительский тип.

Это особенно верно, когда родительский и дочерний объекты передаются в XML, что, как кажется, указывается в сообщении об ошибке, которое вы опубликовали.

...