C# HTTP Get返回多个类型
我正在编写一个web服务,并试图向Get请求添加响应。困难在于,我需要返回多个类型。因此,最初我有一个基类:C# HTTP Get返回多个类型,c#,web-services,rest,asp.net-web-api,get,C#,Web Services,Rest,Asp.net Web Api,Get,我正在编写一个web服务,并试图向Get请求添加响应。困难在于,我需要返回多个类型。因此,最初我有一个基类: public abstract class AbstractSource { public string name { get; set; } } 然后是两个衍生工具: public class DatabaseSource : AbstractSource { } 及 这些类最终将拥有更多自己的特定元素。在我的控制器类中,我有以下测试代码: public class Dat
public abstract class AbstractSource
{
public string name { get; set; }
}
然后是两个衍生工具:
public class DatabaseSource : AbstractSource
{
}
及
这些类最终将拥有更多自己的特定元素。在我的控制器类中,我有以下测试代码:
public class DataSourcesController : ApiController
{
AbstractSource[] sources = new AbstractSource[]
{
new WebSource { name="WebPath"},
new DatabaseSource{name="DB Source"}
};
public IEnumerable<AbstractSource> GetAllDataSources()
{
return sources;
}
}
公共类数据源控制器:ApiController
{
AbstractSource[]sources=新的AbstractSource[]
{
新的WebSource{name=“WebPath”},
新数据库源{name=“DB Source”}
};
公共IEnumerable GetAllDataSources()
{
返回源;
}
}
现在,当我运行这个时,我得到一个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; }
}
你能分享你的序列化异常吗?您使用的是什么序列化程序?您希望客户机如何使“find”类型成为要绑定回的正确类型?我原以为是这样的,但后来使用的是[xmlclude],而不是[KnownType]。谢谢
using System.Runtime.Serialization;
[KnownType(typeof(DatabaseSource))]
[KnownType(typeof(WebSource))]
public abstract class AbstractSource
{
public string name { get; set; }
}