假设我有一个仅用于指定 C# 事件的类,并且我在我的应用程序中传递了这个类。
public class MyEvents
{
public event MyEventHandler OnBeforeSomeAction;
public event MyEventHandler OnSomeAction;
}
为了调用这些事件,调用必须来自类本身。让其他类MyEvents
在传递到应用程序时触发这些事件的简单方法是创建公共触发函数。
public class MyEvents
{
public event MyEventHandler OnBeforeSomeAction;
public event MyEventHandler OnSomeAction;
public void TriggerOnBeforeSomeAction()
{
OnBeforeSomeAction();
}
public void TriggerOnSomeAction()
{
OnSomeAction();
}
}
但是,如果这个类上有很多事件,那么也必须有很多触发方法。有没有办法使用反射来获取事件并触发它?像这样的东西:
public class MyEvents
{
public event MyEventHandler OnBeforeSomeAction;
public event MyEventHandler OnSomeAction;
public void TriggerEvent(string eventName)
{
var event = // some magic reflection.
event.Invoke();
}
}