c# - 动作结果> 必须返回一个列表
问题描述
使用 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();
解决方案
从 msdn 获取此文档: https ://docs.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-2.1#actionresultt-type
C# 不支持接口上的隐式强制转换运算符。因此,必须将接口转换为具体类型才能使用
ActionResult<T>
.
推荐阅读
- android - 离子本地通知声音不适用于 Android 8.0
- javascript - 使用 jQuery 切换导航栏,如果用户使用导航栏媒体查询停止工作
- button - 如何在 IconButton 上产生圆形波纹效果?
- arrays - 将 VBA 整数数组传递给 c# DLL int 数组
- string - 如何从声明性宏中返回新字符串?
- reactjs - 在 React 中使用 Jest 模拟 Axios - 未调用模拟函数
- mysql - SQL / MYSQL 如果一个或多个匹配则弹出整个集合
- android - Android - React-native:输出:错误:找不到资源样式/Theme.AppCompat.Light.NoActionBar
- javascript - DataTables - 以模态显示列数据
- typescript - 使用点符号无法访问的 Typescript 接口中使用字符串枚举的计算属性