将反射方法作为参数传递给另一个反射方法作为委托

时间:2014-11-14 23:57:04

标签: c# reflection methodinfo

我有一个像这样的签名功能

private void FunkA(string eventName, Action action) {}
private void FunkB() {}
我通过反思得到了。动作的值也是通过反射获得的,所以在我的代码中我最终必须找到一种方法将'MethodInfo'作为参数传递给一个调用。

MethodInfo miForFunkA;
MethodInfo miForFunkB;

miForFunkA.Invoke(sourceOfFunkA, new [] {
    methodInfo.Name,
    Delegate.CreateDelegate(typeof(Action), miForFunkB)
});

问题是我无法创建具有字符串和委托类型的参数列表。 该如何通过?

1 个答案:

答案 0 :(得分:0)

您应该明确指定数组类型:

miForFunkA.Invoke(sourceOfFunkA, new object[] {
    methodInfo.Name,
    Delegate.CreateDelegate(typeof(Action), miForFunkB)
});

如果这不能解决您的问题,您应该编辑您的问题,以便更清楚地了解您尝试做的事情,所涉及的所有变量的声明,您现在拥有的代码,它的作用,以及它与你想做的事情有何不同。