如何通过反射在C#中为委托指定静态方法

时间:2011-12-22 04:02:41

标签: c# reflection

请考虑以下代码:

internal delegate object FactoryMethod();

现在说我有以下代码:

String myStaticMethod = "FooFactory.GetInstance()";

如何执行以下操作?

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

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

2 个答案:

答案 0 :(得分:4)

使用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);

答案 1 :(得分:-1)

我发现了这个:

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