在 C# 中,如何创建可用于处理事件的动态方法?
这是一个事件:
public event EventHandler<EventArgs> refresh;
这是一个方法:
public void Test()
{
}
如何动态创建处理刷新事件的方法,以便动态方法调用 Test 方法?
上面的 Test 方法是要调用的方法的示例。
在 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
在 class 中C
):
refresh += CreateHandler(new C(), "Test");
refresh(this, EventArgs.Empty);