моей модели:WebAPI упорядочивает классы, производные от абстрактного типа правильно при возврате JSON, но не XML
public abstract class BaseClass
{
public string id { get; set; }
}
[KnownType(typeof(BaseClass))]
public class ChildClass1 : BaseClass
{
public string shape { get; set; }
}
[KnownType(typeof(BaseClass))]
public class ChildClass2: BaseClass
{
public string color { get; set; }
}
public class Widget
{
public List<BaseClass> Contents { get; set; }
public Widget()
{
Contents = new List<BaseClass>();
}
}
мой веб-апи оконечных:
[HttpGet]
public Widget Get()
{
Widget widget = new Widget();
ChildClass1 cc1 = new ChildClass1();
cc1.id = "1234";
cc1.shape = "round";
ChildClass2 cc2 = new ChildClass2();
cc2.id = "4321";
cc2.color = "red";
widget.Contents.Add(cc1);
widget.Contents.Add(cc2);
return widget;
}
При запросе вывода, как XML, это возникли проблемы сериализация моих производных классов.
Тип объекта ObjectContent1 не смог сериализовать тело ответа для типа контента 'application/xml; кодировка = UTF-8' .
Тип 'WebApplication1.Models.ChildClass1' с именем контракта данных 'ChildClass1: http://schemas.datacontract.org/2004/07/WebApplication1.Models' не ожидается. Подумайте об использовании DataContractResolver, если вы используете с использованием DataContractSerializer или добавляете любые типы, не известные статически , список известных типов - например, с помощью атрибута KnownTypeAttribute или путем добавления их в список известных типов, переданных в сериализатор .