我正在编写一个Web服务,我正在尝试添加对Get请求的响应。困难在于,我有多种类型需要返回。所以最初我有一个基类:
public abstract class AbstractSource
{
public string name { get; set; }
}
其次是两个衍生物:
public class DatabaseSource : AbstractSource
{
}
和
public class WebSource : AbstractSource
{
}
这些类最终将拥有更多自己的特定元素。在我的控制器类中,我有以下测试代码:
public class DataSourcesController : ApiController
{
AbstractSource[] sources = new AbstractSource[]
{
new WebSource { name="WebPath"},
new DatabaseSource{name="DB Source"}
};
public IEnumerable<AbstractSource> GetAllDataSources()
{
return sources;
}
}
现在当我运行它时,我得到一个serializationException。甚至可以返回这样的多种类型吗?
答案 0 :(得分:2)
听起来像是在尝试使用XML格式获取数据。
XML序列化程序(例如DataContractSerializer
)不知道如何将AbstractSource
反序列化为DatabaseSource
或WebSource
,因此您需要对{您[KnownType(...)]
班级的{1}}属性:
AbstractSource