有人问我一个关于事件的非常有趣的问题。我认为答案是否定的,但我很好奇是否有我不知道的方法。
在下一个代码示例中,我可以从引用类 B 或其方法 X 中删除订阅吗?
Class1 A = new Class1();
Class2 B = new Class2();
A.DoneIt += B.X;
意思是 A.DoneIt -= B.X;
没有对 A 类的任何访问权限(也没有对 A 类进行反射)。
最佳答案
不可以,您只有在可以访问该事件时才能取消订阅。
委托(delegate)指向一个方向,即指向一个方法。该方法没有指向事件的指针。因此,对要取消订阅的事件的唯一访问是通过定义它的类型实例。
进一步阅读:Events And Delegates
关于c# - 从订阅者取消订阅 .NET 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6938048/