使用反射调用静态方法
反射提供了一种强大的机制,用于在运行时访问和操作 .NET 类型及其成员。其中一项任务是调用类的静态方法。本文解决了使用反射在特定命名空间 (mySolution.Macros) 中调用静态方法的特定需求。
背景
在提供的代码片段中,目标是迭代特定命名空间中的静态类列表并调用它们的 Run 方法。但是,由于方法是静态的,因此创建实例然后调用方法的标准方法不适用。
解决方案
调用静态方法的关键反射是为了了解传递给 MethodInfo.Invoke 的第一个参数对于静态方法将被忽略。因此,下面修改后的代码成功调用了静态方法:
foreach (var tempClass in macroClasses) { // using reflection I will be able to run the method as: tempClass.GetMethod("Run").Invoke(null, null); }
正如评论中提到的,在调用 GetMethod 之前确保该方法确实是静态的是一个很好的做法:
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
以上是C#中如何使用反射调用特定命名空间中的静态方法?的详细内容。更多信息请关注PHP中文网其他相关文章!