解析WebAPI中的接口

我有一个带有以下签名的控制器方法

[HttpGet] [Route("results")] public List GetResults() { return repo.GetResults(); } 

毫不奇怪,我得到一个JSON .NETexception,说JSON .NET无法将IResult解析为具体类型。 有没有办法为JSON .NET提供具体的类(Result),所以我不必更改方法的单一性?

看起来你想要做的不是dependency injection,而是想要控制数据的序列化方式。 使用自定义媒体类型格式化程序( http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters )完全可以控制,但是您需要删除首先是默认的json格式化程序( http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#json_media_type_formatter )。

这一切都可以完成,但它会使事情变得更脆弱,可能不是你想要的解决方案。 如果客户端需要xml(您也可以替换该格式化程序),它将无法工作。 但更重要的是,如果您在容器中注册了两个Interface接口,会发生什么? 这提出了另一个问题,为什么使用界面作为DTO? 接口通常定义由消费者实现的方法集合。 我知道属性也可以定义,但我不认为这是接口的预期用途。