首页新闻找找看学习计划

func 传参异步方法

0
悬赏园豆:10 [已解决问题] 解决于 2018-06-13 16:06

public async Task<T> AssignAsync<T>(string key, Func<T> acquire) {}

 

var result = await AssignAsync<T>(key, () => _repository.FindAsync(id));

 

报错:无法将 lambda 转制为预期委托类型

 

func 参数如何传入另一个 async 方法

嗷嗷嗷啊的主页 嗷嗷嗷啊 | 初学一级 | 园豆:100
提问于:2018-06-13 11:31
< >
分享
最佳答案
0

试试

var result = await AssignAsync<T>(key, async () => await _repository.FindAsync(id));
收获园豆:10
dudu | 高人七级 |园豆:39136 | 2018-06-13 11:55

谢谢,还是错误:无法将异步 lambda 表达式转换为委托类型:Func<T>

嗷嗷嗷啊 | 园豆:100 (初学一级) | 2018-06-13 14:18

@嗷嗷嗷啊: 知道原因了,上面的写法针对的是 Func<Task<T>>,改为下面的试试

var result = await AssignAsync(key, () => _repository.Find(id));
dudu | 园豆:39136 (高人七级) | 2018-06-13 15:08

@dudu: 老大,这样和我发的问题中的一模一样。- -‘

嗷嗷嗷啊 | 园豆:100 (初学一级) | 2018-06-13 15:32

@嗷嗷嗷啊: 这里是_repository.Find(id),不是_repository.FindAsync(id),如果你要用 _repository.FindAsync(id) ,需要修改 AssignAsync<T>

public async Task<T> AssignAsync<T>(string key, Func<Task<T>> acquire) {}
var result = await AssignAsync<T>(key, async () => await _repository.FindAsync(id));
dudu | 园豆:39136 (高人七级) | 2018-06-13 15:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册