繁体   English   中英

ASP.NET MVC4 Web API接口作为数据协定

[英]ASP.NET MVC4 Web API Interfaces as Data Contract

我有一个MVC4 Web API服务,适用于具体的数据类型。 但是,当我将接口指定为协定并尝试从操作中返回具体类型时,它将引发错误

public interface IData
{
  string NameText {get;set;}
}

[KnownType(typeof(IData))]
public class Data : IData 
{
  string NameText {get;set;}
}

“ ObjectContent`1”类型未能序列化内容类型“ application / xml”的响应主体; 字符集= UTF-8' 。

考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型的列表中-例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型的列表中。

我尝试在指定接口类型的具体类型上添加一个KnownType合同,但是它不起作用。

是否可以在MVC Web API中将接口指定为服务的DataContracts? 这曾经在WCF中起作用

[KnownType]用于指定具体的类,而不是接口。 如果您指定哪些类使用[KnownType]实现IData,那么至少MVC知道必须序列化/反序列化的类型:

[KnownType(typeof(MyDataThingy1))]
public class MyDataThingy1 : IData
{ ... }

[KnownType(typeof(MyDataThingy2))]
public class MyDataThingy2 : IData
{ ... }

这应该可以解决问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM