无法将lambda表达式转换为类型“…”,因为它不是委托类型

美好的一天! 我试图使用lambda表达式编写一个匿名方法,该表达式将从异步任务返回一个对象。 我想在构造函数中执行此操作,因此这是我无法使其父方法异步的原因。

ReadJsonAsync方法返回一个Session对象。 我会告诉你相关的代码:

 Session session; fileService = new FileService(); session = async () => { return await fileService.ReadJsonAsync() }; 

提前致谢!

如果你想要一个匿名方法 ,你必须声明一个返回一个Task因为它用async修饰符标记,因此必须返回一个void (仅用于异步事件处理程序), TaskTask

 Func> anonFunction = async () => await fileService.ReadJsonAsync(); 

如果你所做的只是运行ReadJsonAsync ,你也可以自己保存状态机生成:

 Func> anonFunction = fileService.ReadJsonAsync; 

然后你可以在更高阶函数上await它:

 Func> anonFunction = fileService.ReadJsonAsync; await anonFunction();