首页 > 解决方案 > 动作结果> 必须返回一个列表

问题描述

使用 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 无法将类型隐式转换 'System.Collections.Generic.IEnumerable<Data.Infrastructure.Models.UnresolvedIdentity>''Microsoft.AspNetCore.Mvc.ActionResult<System.Collections.Generic.IEnumerable<Data.Infrastructure.Models.UnresolvedIdentity>>'

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

为什么不ActionResult<T>知道GetUnresolvedIdentities()返回一个IEnumerable<>而只返回那个?

的签名GetUnresolvedIdentities是:

Task<IEnumerable<UnresolvedIdentity>> GetUnresolvedIdentities();

标签: c#asp.net-coreactionresultasp.net-core-2.1

解决方案


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

C# 不支持接口上的隐式强制转换运算符。因此,必须将接口转换为具体类型才能使用ActionResult<T>.


推荐阅读