Asp.net web api 从MVC Web API返回接口

Asp.net web api 从MVC Web API返回接口,asp.net-web-api,Asp.net Web Api,我有以下两门课 public interface INotification { int Id { get; set; } bool IsNotificationShown { get; set; } DateTime NotificationDate { get; set; } } public class Notification : INotification { public int Id { get;

我有以下两门课

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 };
    }
公共列表Get()
{
INotification notif=new Notification{Id=1,isnotificationshow=false,NotificationDate=DateTime。现在,NotificationDescription=“Desc”,NotificationFrom=“Abcd”,NotificationTo=“Abcd”,NotificationTypeId=1};
返回新列表{notif};
}
当我在浏览器上运行此命令时,会出现以下错误

ObjectContent'1'类型未能序列化内容类型application/xml的响应正文;字符集=utf-8'.


只要我将返回类型从INotification更改为Notification,它就可以正常工作。有人对如何解决这个问题有什么建议吗?

只需在类中添加属性
KnowType
。像这样:

[KnownType(typeof(Notification))]
public class Notification : INotification
{
...

只需将属性
KnowType
添加到类中即可。像这样:

[KnownType(typeof(Notification))]
public class Notification : INotification
{
...

你不能序列化一个接口-没有什么可以序列化的。所以我必须返回一个具体的类型,框架不能理解吗?使用接口的全部目的都消失了。您必须将接口转换为具体类型。接口不包含数据,因此没有任何东西可以通过网络进行序列化。接口定义了实现类必须实现的属性/方法,但实际实现(和数据)取决于具体实例。您无法序列化接口,因为没有任何东西需要序列化。因此,我必须返回具体类型,框架无法理解吗?使用接口的全部目的都消失了。您必须将接口转换为具体类型。接口不包含数据,因此没有任何东西可以通过网络进行序列化。接口定义了实现类必须实现的属性/方法,但实际实现(和数据)取决于具体实例。