gpt4 book ai didi

c# - 无法将 lambda 表达式转换为类型 "...",因为它不是委托(delegate)类型

转载 作者:太空狗 更新时间:2023-10-29 20:04:35 26 4
gpt4 key购买 nike

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

ReadJsonAsync 方法返回一个 Session 对象。我将向您展示相关代码:

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

提前致谢!

最佳答案

如果您想要一个匿名方法,您必须声明一个返回Task<Session> 的方法。因为它标有 async修饰符,因此必须返回 void (仅适用于异步事件处理程序),TaskTask<T> :

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

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

Func<Task<Session>> anonFunction = fileService.ReadJsonAsync;

然后你可以await在它上面的调用堆栈上:

Func<Task<Session>> anonFunction = fileService.ReadJsonAsync;
await anonFunction();

关于c# - 无法将 lambda 表达式转换为类型 "...",因为它不是委托(delegate)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com