2009-11-12 3 views
0

У меня есть следующий граф объектов:Различные варианты XmlSerialization и производного типа

public class BaseType 
{ 
} 

public class DerivedType : BaseType 
{ 
} 

Когда я прохожу DerivedType к XmlSerializer мне нужно, чтобы он отражает на BaseType вместо DerivedType. Есть ли способ контролировать это с помощью атрибутов без реализации IXmlSerializer на DerivedType?

+0

так что вы хотите только свойства BaseType и не в DerivedType? – Natrium

+0

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

ответ

0

Если у вас есть контроль над инициализацией сериализатора, просто передайте Type [] с объектом производного типа как extraTypes. В противном случае добавьте

[XmlInclude(typeof(Derived))] 

к определению базового класса. Выходной XML будет выглядеть точно так же, как если бы вы передали базовый экземпляр, кроме атрибута xsi: type, с именем производного типа.

Я думаю, что это то, что вы просили ...