HTTP Get返回多个类型
本文关键字:类型 返回 Get HTTP | 更新日期: 2023-09-27 18:08:45
我正在编写一个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。有可能像这样返回多个类型吗?
听起来你想用XML获取数据。
XML序列化器(例如DataContractSerializer
)不知道如何将AbstractSource
反序列化为DatabaseSource
或WebSource
,因此您需要在AbstractSource
类上捕捉[KnownType(...)]
属性:
using System.Runtime.Serialization;
[KnownType(typeof(DatabaseSource))]
[KnownType(typeof(WebSource))]
public abstract class AbstractSource
{
public string name { get; set; }
}