У меня есть метод контроллера этой подписи:
public async IAsyncEnumerable<MyDto> Get()
Он работает нормально, но мне нужно выполнить некоторую проверку запроса и вернуть соответственно 401, 400 и другие коды, которые он не поддерживает. Кроме того, следующая подпись не компилируется:
public async Task<ActionResult<IAsyncEnumerable<MyDto>>> Get()
Ошибка:
Невозможно неявно преобразовать тип 'Microsoft.AspNetCore. Mvc .UnauthorizedResult' в 'MyApi.Responses. MyDto '
Полный метод:
public async IAsyncEnumerable<MyDto> Get()
{
if (IsRequestInvalid())
{
// Can't do the following. Does not compile.
yield return Unauthorized();
}
var retrievedDtos = _someService.GetAllDtosAsync(_userId);
await foreach (var currentDto in retrievedDtos)
{
yield return currentDto;
}
}
Есть идеи? Не могу поверить, что Microsoft разработала IAsyncEnumerable для использования без возможности / гибкости возврата чего-либо еще.