取消订阅订阅者的.NET事件

Dor*_*hen 4 .net c# events delegates reference

我被问到一个关于事件的非常有趣的问题.我认为答案是肯定的,但我很好奇是否有一种我不知道的方式.

在下一个代码示例中,我可以从引用类B或其方法X中删除订阅吗?

Class1 A = new Class1();
Class2 B = new Class2();

A.DoneIt += B.X;
Run Code Online (Sandbox Code Playgroud)

这意味着 A.DoneIt -= B.X; 无需访问A类(也不能通过A类反思).

Geo*_*ett 6

不,您只能取消订阅才能访问该活动.

代表们指出了一种方式,即一种方法.该方法没有指向事件的指针.因此,对取消订阅的事件的唯一访问是通过它定义的类型实例.

进一步阅读:活动和代表