当前位置: 首页 > news >正文

C#中的Invoke

在 C# 中,Invoke() 是一个用于调用方法的方法,它能够在运行时动态地调用一个方法。

Invoke() 方法的使用方式有两种:

  1. 通过 MethodInfo 对象调用:
using System.Reflection;namespace ConsoleApp_Invoke
{public class Program{static void Main(string[] args){MethodInfo openMethodInfo = typeof(MyStore).GetMethod("Open");openMethodInfo.Invoke(new MyStore(), null);  // 如果调用的方法参数为空,则第二个参数为nullMethodInfo sellMethodInfo = typeof(MyStore).GetMethod("Sell");sellMethodInfo.Invoke(new MyStore(), new object[] { "苹果", 10 });  // 如果调用的方法有参数,则第二个参数传递一个参数数组}}public class MyStore{public void Open(){Console.WriteLine("早上商店进行开张了");}public void Sell(string Name, int count){Console.WriteLine($"出售{count}{Name}");}}
}

在上面的示例中,我们首先通过 typeof(MyStore).GetMethod("MyMethod") 获取了 Open 方法的 MethodInfo 对象,然后使用 Invoke() 方法调用该方法。

Invoke() 方法接受两个参数:

  • 第一个参数是要调用方法的对象实例,如果方法是静态的,则可以传递 null

  • 第二个参数是方法的参数数组,如上面我们调用Sell方法。

  1. 通过委托调用:
Action<string> myDelegate = new MyClass().MyMethod; // 创建委托对象
myDelegate.Invoke("Hello"); // 调用委托

在上面的示例中,我们首先创建了一个 Action<string> 委托对象,并将其初始化为 MyMethod 方法,然后使用 Invoke() 方法调用委托。与第一种方式相比,这种方式更加简洁,但使用委托调用方法需要确保委托的签名与要调用的方法的签名匹配。

无论使用哪种方式,Invoke() 方法都可以用于调用方法并传递参数。

需要注意的是,Invoke() 方法的调用可能会引发 TargetExceptionMethodAccessExceptionTargetInvocationException 等异常,所以在实际使用中应该进行异常处理。

http://www.lryc.cn/news/111698.html

相关文章:

  • Hive终端命令行打印很多日志时,如何设置日志级别
  • Android的PopupWindow(详细版)
  • Navicat远程连接Linux的MySQL
  • Spring IOC
  • 华为OD机试真题【上班之路】
  • 【linux源码学习】【实验篇】使用bochs运行linux0.11系统(搭建一个自己的工作站)
  • java+springboot+mysql个人日记管理系统
  • 旋转图像 LeetCode热题100
  • Vue3 element-plus表单嵌套表格实现动态表单验证
  • VSCode插件Todo Tree的使用
  • 无人驾驶实战-第五课(动态环境感知与3D检测算法)
  • Tomcat 的内存配置
  • pycharm出现python test运行报错(pytest模式)
  • JavaScript篇 this指向
  • 操作系统复习总结1
  • Matlab中图的最短路径
  • 没有jodatime,rust里怎么将字符串转为日期呢?
  • 【Markdown入门及使用】
  • 大数据面试题:HBase的读写缓存
  • springboot基于vue的高校迎新系统的设计与实现8jf9e
  • JVM入门到精通
  • Hive执行引擎的区别
  • 分布式 - 服务器Nginx:常见问题总结(二)
  • 【Paper Reading】CenterNet:Keypoint Triplets for Object Detection
  • 【BASH】回顾与知识点梳理(三)
  • C#设计模式之---单例模式
  • Git工具安装
  • 深度学习——注意力机制、自注意力机制
  • STM32入门学习之定时器中断
  • 基本数据类型与包装数据类型的使用标准