0

在 C# 中,如何创建可用于处理事件的动态方法?

这是一个事件:

public event EventHandler<EventArgs> refresh;

这是一个方法:

public void Test()
{

}

如何动态创建处理刷新事件的方法,以便动态方法调用 Test 方法?

上面的 Test 方法是要调用的方法的示例。

4

2 回答 2

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();
}
于 2016-07-01T03:33:55.337 回答
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在 class 中C):

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

refresh(this, EventArgs.Empty);
于 2016-07-01T14:52:45.723 回答