Задача, возвращающая интерфейс [закрыто]
Мне нужно реализовать следующее тело метода:
public Task<IAsyncDisposable> SomeMethodAsync()
Так что его можно использовать так:
await using (await SomeMethodAsync())
Однако я не знаю, как вернуться. Я пытался создать класс
Release
что происходит от
IAsyncDisposable
однако компилятор жалуется, что не может привести
Task<Release>
к
Task<IAsyncDisposable>
, хотя и происходит от него.
public class Release : IAsyncDisposable
{
public ValueTask DisposeAsync()
{
throw new NotImplementedException();
}
}
1 ответ
Итак, вы не можете раскрыть соответствующие части реализации в
SomeMethodAsync
... так что попробую угадать:
public Task<IAsyncDisposable> SomeMethodAsync()
{
// ... yadda yadda
// create an object "release" of type Release which inherits IAsyncDisposable
// or maybe you get it returned from some API call ...
return Task.FromResult(release);
}
Это верно? Или хотя бы похожее?
В этом случае решение заключается в простом приведении:
public Task<IAsyncDisposable> SomeMethodAsync()
{
// ... yadda yadda
// create an object of type Release which inherits IAsyncDisposable
return Task.FromResult((IAsyncDisposable)release);
}
и ошибка должна исчезнуть.
См. Также: https://dotnetfiddle.net/WcMiIn
Подскажите пожалуйста, если мое предположение неверно - потом удалим.