T 到 ActionResult<T> 的隐式转换对某些类型不起作用

Implicit conversion of T to ActionResult<T> does not work for some types

在asp.net core 2.1中,引入了AsctionResult<T>,定义了一个从TActionResult<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);