[英]How can I create a dynamic method to handle an event?
在C#中,如何創建可用於處理事件的動態方法?
這是一個事件:
public event EventHandler<EventArgs> refresh;
這是一種方法:
public void Test()
{
}
如何動態創建處理刷新事件的方法,以便動態方法調用Test方法?
上面的Test方法是要調用的方法的示例。
好吧,您只需訂閱該活動即可。
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();
}
如果要調用的方法是某個類中的實例方法,並且具有該類的實例和方法的名稱,則可以使用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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.