在C#中,如何创建可用于处理事件的动态方法?
这是一个事件:
public event EventHandler<EventArgs> refresh;
这是一种方法:
public void Test()
{
}
如何动态创建处理刷新事件的方法,以便动态方法调用Test方法?
上面的测试方法是要调用的方法的一个示例。
答案 0 :(得分:0)
好吧,你可以直接订阅这个活动。
public class SomeClass
{
public event EventHandler<EventArgs> refresh;
}
public void Test()
{
}
void Main()
{
var some = new SomeClass();
some.refresh += (sender, e) => Test();
// or
some.refresh += Refreshed;
}
void Refreshed(object sender, EventArgs e)
{
Test();
}
答案 1 :(得分:0)
如果要调用的方法是某个类中的实例方法,并且您拥有该类的实例和方法的名称,则可以使用Delegate.CreateDelegate()
创建该方法的委托,然后使用一个lambda在事件处理程序中调用它:
static EventHandler<EventArgs> CreateHandler(object methodObject, string methodName)
{
var methodDelegate =
(Action)Delegate.CreateDelegate(typeof(Action), methodObject, methodName);
return (s, e) => methodDelegate();
}
用法可以如下所示(假设Test
在C
类中):
refresh += CreateHandler(new C(), "Test");
refresh(this, EventArgs.Empty);