c# - ActionResult<IEnumerable<T>> 必须返回一个 List<T>

标签 c# asp.net-core actionresult asp.net-core-2.1

使用 ASP.NET Core 2.1 获取以下代码:

[HttpGet("/unresolved")]
public async Task<ActionResult<IEnumerable<UnresolvedIdentity>>> GetUnresolvedIdentities()
{
   var results = await _identities.GetUnresolvedIdentities().ConfigureAwait(false);
   return results.ToList();
}

自从GetUnresolvedIdentities()我就想到了返回 IEnumerable<UnresolvedIdentity>我可以返回

return await _identities.GetUnresolvedIdentities().ConfigureAwait(false);

除了我不能,因为我得到这个错误:

CS0029 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Data.Infrastructure.Models.UnresolvedIdentity>' to 'Microsoft.AspNetCore.Mvc.ActionResult<System.Collections.Generic.IEnumerable<Data.Infrastructure.Models.UnresolvedIdentity>>'

我需要 .ToList() ,这很烦人,因为它是 2 行而不是 1 行。

为什么不能ActionResult<T>弄清楚 GetUnresolvedIdentities()返回 IEnumerable<>然后把它还回去?

GetUnresolvedIdentities的签名是:

Task<IEnumerable<UnresolvedIdentity>> GetUnresolvedIdentities();

最佳答案

从 msdn 获取此文档: https://learn.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-2.1#actionresultt-type

C# doesn't support implicit cast operators on interfaces. Consequently, conversion of the interface to a concrete type is necessary to use ActionResult<T>.

关于c# - ActionResult<IEnumerable<T>> 必须返回一个 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51742520/

相关文章:

c# - 如何将模型传递给另一个区域的 Controller ?

c# - 将字符串从 Activity 传递到 DialogFragment

c# - AutoMapper - 将 2 个对象列表合并为 1 个列表

c# - 将 Owin/Katana 与 ASP.NET Core(实际用例)一起使用是否仍然相关?

ajax - MVC3-Ajax加载图标

java - Struts 标签覆盖实际的上下文路径

asp.net-mvc - 多部分 http 响应的自定义 ActionResult?

c# - 除了在 Visual Studio 2017 中启动之外,如何将调试器附加到其他进程?

asp.net-core - Asp.net MVC 核心中 Ajax.BeginForms 的替代方案是什么

c# - 在ASP.NET Core中在 Controller OnActionExecuting之前执行全局过滤器