У меня есть иерархия классов, которая унаследована от базового класса. Я хочу десериализовать все типы из XML. Документация говорит, чтобы использовать этот конструктор для этой цели:Десериализация производных типов
XmlSerializer(Type type, Type[] extraTypes);
Так что я делаю что-то вроде этого:
public class SomeBase { public string SomeProperty { get; set } }
public class SomeChild : SomeBase { public string SomeOtherProperty { get; set; } }
Затем я создаю XmlSerializer и попытаться десериализации мой XML:
XmlSerializer serializer = new XmlSerializer(typeof(SomeBase),
new Type[] { typeof(SomeChild) });
SomeBase deserialized = (SomeBase)serializer.Deserialize(new StringReader(myXml));
И Я получаю InvalidOperationException, в котором говорится:
"<SomeChild xmlns=''> was not expected."
Как я могу это решить?
Update Вот мой XML:
// Works fine:
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<SomeBase>
<SomeProperty>some value</SomeProperty>
</SomeBase>
// InvalidOperationException:
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<SomeChild>
<SomeProperty>some value</SomeProperty>
<SomeOtherProperty>some other value</SomeOtherProperty>
</SomeChild>
Что делает ваш файл XML выглядит? – FlyingFoX