Tôi có một phương pháp async bên trong một thư viện lớp di động với chữ ký này:Chuyển đổi biểu thức lambda không đồng bộ thành loại ủy quyền System.Func <T>?
private async Task<T> _Fetch<T>(Uri uri)
Nó lấy một tài nguyên được đúc lại như một loại T. bê tông
Tôi đang làm việc với một bộ nhớ cache bên thứ 3 thư viện (Akavache) mà đòi hỏi một Func<T>
là một trong những thông số và đã cố gắng làm như vậy theo cách này:
await this.CacheProvider.GetOrCreateObject<T>(key,
async() => await _Fetch<T>(uri), cacheExpiry);
Điều này dẫn đến các lỗi:
Cannot convert async lambda expression to delegate type '
System.Func<T>
'. An async lambda expression may returnvoid
,Task
orTask<T>
, none of which are convertible to 'System.Func<T>
'.
Tôi đã thử hoán vị khác nhau của Func<T>
phân công mà không cần bất kỳ may mắn, cách duy nhất tôi có thể lấy mã để làm việc là để làm cho Func<T>
chặn:
await this.CacheProvider.GetOrCreateObject<T>(key,
() => _Fetch<T>(uri).Result, cacheExpiry);
mà bế tắc ứng dụng của tôi.
Bất kỳ con trỏ nào về nơi tôi sẽ đi lạc?
Bạn đang tìm kiếm 'Func' –