簡體   English   中英

如何創建動態方法來處理事件?

[英]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();
}

用法如下所示(假設TestC類中):

refresh += CreateHandler(new C(), "Test");

refresh(this, EventArgs.Empty);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM