使用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();
答案 0 :(得分:19)
C#不支持接口上的隐式强制转换运算符。 因此,将接口转换为具体类型是 必须使用
ActionResult<T>
。