gpt4 book ai didi

c# - ASP.NET MVC4 Web API 接口(interface)作为数据契约

转载 作者:行者123 更新时间:2023-12-02 05:16:11 30 4
gpt4 key购买 nike

我有一个适用于具体数据类型的 MVC4 Web API 服务。但是当我将接口(interface)指定为契约并尝试从操作中返回具体类型时,它会抛出错误

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

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

The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.

Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.

我尝试在指定接口(interface)类型的具体类型上添加 KnownType 协定,但它不起作用。

在 MVC Web API 中不能将接口(interface)指定为服务的 DataContracts 吗?这曾经在 WCF 中工作

最佳答案

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

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

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

这应该可以解决问题!

关于c# - ASP.NET MVC4 Web API 接口(interface)作为数据契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14603292/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com