如何从拥有类外部检查事件处理程序的成员资格?

bil*_*lpg 1 .net c# events event-handling

这个问题询问是否有办法找到代码是否已经为事件添加了自己的事件处理程序.但是,给出的答案只能在拥有该事件的同一个类中进行.(Delegate.GetInvocationList等.)

我想为AppDomain.CurrentDomain.AssemblyResolve添加自定义事件处理程序.有没有办法在再次添加之前找出我的自定义处理程序是否已添加?(对于此标准库事件和其他标准库事件.)

如果答案确实是"那是不可能的".那么请把它作为答案.

Jon*_*eet 5

这不可能.

基本上,您对外部事件的唯一操作是"订阅"和"取消订阅".

现在,您可以在订阅之前取消订阅.如果指定的处理程序不是事件的处理程序,则取消订阅是无操作.如果你确定你总是这样做,那么你肯定会订阅一个处理程序.它确实意味着你需要小心你订阅的任何地方做到这一点- 所以理想情况下,将代码放在一个地方.

(或者,只需更改您的活动订阅,以便您可以轻松告诉您只会订阅一次...)

  • 谢谢.如果你认为它不可能那么它可能就是.我希望你被视为无懈可击.:) (3认同)