Неявное преобразование T в ActionResult <T>не работает для некоторых типов - PullRequest
0 голосов
/ 27 июня 2018

В ядре asp.net 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);

1 Ответ

0 голосов
/ 27 июня 2018

Хорошо. Очевидно, это не удастся для (некоторых?) Интерфейсов. В этом документе предоставляется дополнительная информация: Почему неявное преобразование типов в C # не выполняется?

Обходной путь - использовать конструктор ActionResult:

            return new ActionResult<IEnumerable>(myData);
...