我正在使用第三方产品,其中视图具有路由事件的类处理程序。类处理程序包含不需要的代码。理想情况下,我想完全删除对RegisterClassHandler的调用,但遗憾的是我没有源代码。我已经读过没有办法取消注册类处理程序。有没有其他方法可以阻止回调被执行?
static ThirdPartyView
{
EventManager.RegisterClassHandler(
typeof(ThirdPartyView),
Control.PreviewLostKeyboardFocusEvent,
new KeyboardFocusChangedEventHandler(OnPreviousLostKeyboardFocus),
true);
}
如何删除/停用/停用此类处理程序?
答案 0 :(得分:0)
如果您拥有的库不是netcore
库,那么您可以尝试使用IL编辑器,例如https://sourceforge.net/projects/dile/或https://github.com/0xd4d/dnSpy或http://reflexil.net/
当您发现RegisterClassHandler
调用时,我猜您可以尝试将new KeyboardFocusChangedEventHandler(OnPreviousLostKeyboardFocus)
替换为null。如果它不起作用,您可以尝试擦除整个方法调用。
如果它是netcore
项目,您仍然可以编辑IL代码,但我不确定那些执行此操作且具有GUI的工具是否能够跟上发布的新netcore
版本