如何在c#中通过反射将静态方法分配给委托

本文关键字:静态方法 分配 反射 | 更新日期: 2023-09-27 18:18:38

考虑以下代码:

internal delegate object FactoryMethod();

现在假设我有以下代码:

String myStaticMethod = "FooFactory.GetInstance()";

我该怎么做?

FactoryMethod myMethod = //A delegate pointing to FooFactory.GetInstance()

我正在搜索,但是我似乎找不到一个干净的例子,或者至少一个处理静态方法的例子。

如何在c#中通过反射将静态方法分配给委托

使用Delegate.CreateDelegate的一个过载。下面是一种可能的方法:

var className = "FooFactory";
var methodName = "GetInstance";
var implType = Type.GetType(className);
var implMethod = implType.GetMethod(methodName, new Type[0]);
var res = Delegate.CreateDelegate(typeof(FactoryMethod), implMethod);

我发现了这个:

typeof(YourClass).GetMethod("GetInstance", BindingFlags.Public | BindingFlags.Static);