【发布时间】:2014-12-11 07:50:37
【问题描述】:
我有以下两个类
public interface INotification
{
int Id { get; set; }
bool IsNotificationShown { get; set; }
DateTime NotificationDate { get; set; }
}
public class Notification : INotification
{
public int Id
{
get;
set;
}
public bool IsNotificationShown
{
get;
set;
}
public DateTime NotificationDate
{
get;
set;
}
}
WebAPI 控制器具有以下操作,我已硬编码值以便于阅读
public List<INotification> Get()
{
INotification notif = new Notification { Id = 1, IsNotificationShown = false, NotificationDate = DateTime.Now, NotificationDescription = "Desc", NotificationFrom = "Abcd", NotificationTo = "Abcd", NotificationTypeId = 1 } ;
return new List<INotification> { notif };
}
当我在浏览器上运行时,我收到以下错误
“ObjectContent`1”类型未能序列化内容类型“application/xml;”的响应正文; charset=utf-8'。
只要我将返回类型从 INotification 更改为 Notification,它就可以正常工作。有人对如何解决此问题有任何建议吗?
【问题讨论】:
-
你不能序列化一个接口——没有什么可以序列化的。
-
所以我必须返回一个具体的类型,框架不能解决吗?使用界面的全部目的已经不复存在了。
-
您必须将接口转换为具体类型。接口不包含数据,因此无需通过网络进行序列化。接口定义了实现类必须实现的属性/方法,但实际实现(和数据)取决于具体实例。
标签: asp.net-web-api