Любой способ указать строку XML, используемую в xsi: type = ""? - PullRequest
3 голосов
/ 02 апреля 2012

У меня есть иерархия классов, которые сериализуются в XML с использованием XMLSerialiser. Для этого я объявляю все конкретные типы с [XmlInclude]. например.

 [XmlInclude(typeof(Derived))]
 public class Base
 {
 }

 public class Derived : Base
 {
 }

Экземпляр Derived сериализуется как:

<Base xsi:type="Derived" />

Можно ли как-нибудь изменить тип текста на что-то, кроме имени класса? например:

<Base xsi:type="Fred" />

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Я думаю, вы делаете это следующим образом:

[XmlType(TypeName = "Fred")]
public class Derived : Base
{
}
1 голос
/ 02 апреля 2012

Используйте атрибут XmlType :

[XmlInclude(typeof(Derived))]
public class Base
{
}

[XmlType("Fred")]
public class Derived : Base
{
}

Это даст вам желаемое xsi:type при сериализации объекта Derived с использованием сериализатора Base. Вывод моей тестовой программы:

<Base xsi:type="Fred"/>
...