我在 Host
类中实现了一个接口(interface),如下所示:
void Method1(Action<Args1> action1, Action<Args1> action2);
然后我为 action1
和 action2
传递以下方法。
private void Action1(Args1 obj)
{
//...
}
private void Action2(Args1 obj)
{
//...
}
使用反射,如何使用并传递方法 Action1
和 Action2
来调用它?
最佳答案
//here you pass the methods Action1 and Action2 as parameters
//to the delegates - if you need to construct these by reflection
//then you need to reflect the methods and use the
//Delegate.CreateDelegate method.
var param1 = new Action<Args1>(Action1);
var param2 = new Action<Args1>(Action2);
//instance of Host on which to execute
var hostInstance = new Host();
var method = typeof(Host).GetMethod("Method1",
BindingFlags.Public | BindingFlags.Instance);
method.Invoke(hostInstance, new object[] { param1, param2 });
关于c# - 反射:调用方法,传递委托(delegate)作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904656/