Преобразовать асинхронное лямбда-выражение в тип делегата System.Func <T>?
У меня есть асинхронный метод внутри переносимой библиотеки классов с этой подписью:
private async Task _Fetch(Uri uri)
Он извлекает ресурс, который возвращается как конкретный тип T.I '
я работаю со сторонней библиотекой кеша (Akavache) что требуетFunc
в качестве одного из параметров и попытался сделать это таким образом:
await this.CacheProvider.GetOrCreateObject(key,
async () => await _Fetch(uri), cacheExpiry);
Это приводит к ошибке:
Невозможно преобразовать асинхронное лямбда-выражение в тип делегата ''System.Func
, Асинхронное лямбда-выражение может возвращаться,void
Task
или жеTask
, ни один из которых не может быть преобразован в ".I"System.Func
мы пробовали различные перестановкиFunc
без удачи, единственный способ заставить код работать, это сделатьFunc
блокировка:
await this.CacheProvider.GetOrCreateObject(key,
() => _Fetch(uri).Result, cacheExpiry);
который блокирует мое приложение.
Любые указатели на то, где яя сбился с пути?