首页
关于
Search
1
C#对接chatgpt
127 阅读
2
C语言中的类型衰变
122 阅读
3
免费ChatGPTKey分享
121 阅读
4
winform中combobox绑定数据源
112 阅读
5
反射异步调用
73 阅读
技术分享
后端分享
前端分享
福利活动
资源分享
天天向上
登录
/
注册
Search
标签搜索
C#
ChatGpt
DotNet
.NET
SSE
Stream
winform
c
dynamic
反序列化
反射
异步
gpt
ai
西街长安
累计撰写
12
篇文章
累计收到
45
条评论
首页
栏目
技术分享
后端分享
前端分享
福利活动
资源分享
天天向上
页面
关于
搜索到
1
篇与
的结果
2023-07-06
反射异步调用
在 C# 中,通过反射获取到的方法可以使用异步调用。以下是一种实现异步调用反射方法的示例代码:using System; using System.Reflection; using System.Threading.Tasks; public class Program { public static async Task Main() { // 获取方法所在的类型 Type type = typeof(MyClass); // 创建类型的实例 object instance = Activator.CreateInstance(type); // 获取方法信息 MethodInfo methodInfo = type.GetMethod("MyMethod"); // 检查方法是否可异步调用 if (methodInfo.ReturnType == typeof(Task)) { // 调用异步方法 Task task = (Task)methodInfo.Invoke(instance, null); // 等待异步方法完成 await task; } else if (methodInfo.ReturnType.IsGenericType && methodInfo.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)) { // 调用异步方法 dynamic task = methodInfo.Invoke(instance, null); // 等待异步方法完成并获取结果 dynamic result = await task; // 使用结果 Console.WriteLine(result); } } } public class MyClass { public async Task MyMethod() { // 异步方法的实现 await Task.Delay(1000); Console.WriteLine("Async method completed."); } }在上面的示例中,我们通过反射获取到了名为 "MyMethod" 的方法,并判断其返回类型来确定它是否为异步方法。如果返回类型是 Task,则使用 (Task)methodInfo.Invoke(instance, null) 异步调用方法并等待其完成。如果返回类型是泛型类型 Task<T>,则使用 dynamic 类型来调用异步方法并等待其完成,并获取到结果后进行处理。请注意,如果你要使用异步方法的返回值,需要在调用异步方法之前使用 await 关键字等待异步方法完成,并根据需要处理异步方法的返回值。
2023年07月06日
73 阅读
0 评论
0 点赞