T 到 ActionResult<T> 的隐式转换对某些类型不起作用
Implicit conversion of T to ActionResult<T> does not work for some types
在asp.net core 2.1中,引入了AsctionResult<T>
,定义了一个从T
到ActionResult<T>
的隐式类型转换
在我的代码中,某些转换出现错误。例如:
Error CS0029 Cannot implicitly convert type 'System.Collections.IEnumerable' to 'Microsoft.AspNetCore.Mvc.ActionResult<System.Collections.IEnumerable>'
虽然相同的转换对其他类型也适用。对于我的代码中定义的几种类型,我也会收到此错误。
上述错误的代码是:
public async Task<ActionResult<IEnumerable>> GetByFilter([FromBody]EntityListRequest request)
{
return await _entityHandler.GetByFilter(request);
}
其中 _entityHandler.GetByFilter()
是:
Task<IEnumerable> GetByFilter(EntityListRequest request);
好的。显然这对于(某些?)接口会失败。此 QA 中提供了更多信息:Why does this implicit type conversion in C# fail?
解决方法是使用 ActionResult 的构造函数:
return new ActionResult<IEnumerable>(myData);
在asp.net core 2.1中,引入了AsctionResult<T>
,定义了一个从T
到ActionResult<T>
在我的代码中,某些转换出现错误。例如:
Error CS0029 Cannot implicitly convert type 'System.Collections.IEnumerable' to 'Microsoft.AspNetCore.Mvc.ActionResult<System.Collections.IEnumerable>'
虽然相同的转换对其他类型也适用。对于我的代码中定义的几种类型,我也会收到此错误。
上述错误的代码是:
public async Task<ActionResult<IEnumerable>> GetByFilter([FromBody]EntityListRequest request)
{
return await _entityHandler.GetByFilter(request);
}
其中 _entityHandler.GetByFilter()
是:
Task<IEnumerable> GetByFilter(EntityListRequest request);
好的。显然这对于(某些?)接口会失败。此 QA 中提供了更多信息:Why does this implicit type conversion in C# fail?
解决方法是使用 ActionResult 的构造函数:
return new ActionResult<IEnumerable>(myData);