将回调传递给Invoke

时间:2017-01-20 00:00:50

标签: c#

我无法弄清楚如何将回调作为参数使用Invoke。 CallbackMethod是这个例子中的回调,我尝试调用MyFunc(任何给定类型)并将其作为回调传递给CallbackMethod。

MyFunc是我试图调用的模板函数。

问题是CallbackMethod是一个方法,不喜欢转换为对象。如果我不使用invoke,它的工作正常,但由于Invoke需要一个对象数组,我不知道该怎么做。我已经尝试了不同的方法,但我似乎无法找到一个有效的方法。

MethodInfo mi = typeof(MyType).GetMethod("MyFunc");
mi.MakeGenericMethod(mType).Invoke(this.MyTypeInstance, new object[] { CallbackMethod });

int MyFunc<T>(Action<T> callback) where T : class, new();

public void CallbackMethod<T>(T msg)
{
...
}

1 个答案:

答案 0 :(得分:0)

尝试将该方法强制转换为委托。

mi.MakeGenericMethod(mType).Invoke(this.MyTypeInstance, 
     new object[] { (Action<object>)CallbackMethod });