我的原始答案适合在定义事件的类中使用,但是您已经更新了问题,以反映您希望从定义类之外完成此操作,因此,我已将其删除。
只有定义事件的类才能引用该事件使用的隐式委托变量。在该类之外,您只能通过和来访问add
和remove
方法。这意味着您不能直接执行您要问的事情。但是,您可以使用功能性方法。+=``-=
class A{
public event EventHandler Event1;
public void TriggerEvent1(){
if(Event1 != null)
Event1(this, EventArgs.Empty);
}
}
class B{
static void HandleEvent(object o, EventArgs e){
Console.WriteLine("Woo-hoo!");
}
static void AttachToEvent(Action<EventHandler> attach){
attach(HandleEvent);
}
static void Main(){
A a = new A();
AttachToEvent(handler=>a.Event1 += handler);
a.TriggerEvent1();
}
}