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

发布于 2024-11-27 14:41:06 字数 264 浏览 0 评论 0原文

有人问我一个关于事件的非常有趣的问题。我认为答案是否定的,但我很好奇是否有一种我不知道的方法。

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

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

A.DoneIt += B.X;

意味着在不访问 A 类的情况下执行 A.DoneIt -= BX; 操作(也不通过对 A 类的反射)。

I was asked a very interesting question about events. I think the answer is no but I'm curious if there is a way that I don't know of.

in the next code sample, can I delete the subscription from the referring class B or its Method X??

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

A.DoneIt += B.X;

meaning doing A.DoneIt -= B.X; without any access to Class A(nor by reflection on class A).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

您的好友蓝忘机已上羡 2024-12-04 14:41:06

不可以,您只能在可以访问该活动的情况下取消订阅。

代表指向一种方式,即一种方法。该方法没有返回事件的指针。因此,对要取消订阅的事件的唯一访问是通过其定义的类型实例。

进一步阅读:事件和代表

No, you can only unsubscribe if you can access the event.

Delegates point one way, i.e. to a method. The method has no pointer back to the event. So the only access to the event to unsubscribe is through the type instance it's defined on.

Further reading: Events And Delegates

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文