Любой способ указать строку XML, используемую в xsi:type=""?
У меня есть иерархия классов, которые сериализуются в XML с помощью XMLSerialiser
, Для этого я объявляю все конкретные типы с [XmlInclude]
, например.
[XmlInclude(typeof(Derived))]
public class Base
{
}
public class Derived : Base
{
}
Экземпляр Derived сериализуется как:
<Base xsi:type="Derived" />
Есть ли способ изменить тип текста на что-то, кроме имени класса? например:
<Base xsi:type="Fred" />
2 ответа
Решение
Я думаю, что вы делаете это следующим образом:
[XmlType(TypeName = "Fred")]
public class Derived : Base
{
}
Используйте атрибут XmlType:
[XmlInclude(typeof(Derived))]
public class Base
{
}
[XmlType("Fred")]
public class Derived : Base
{
}
Это даст вам желаемое xsi:type
при сериализации Derived
объект с помощью Base
сериализатору. Вывод моей тестовой программы:
<Base xsi:type="Fred"/>