我正在编写一个基于 WinForms 的 IDE 风格的应用程序。作为该应用程序的一部分,它会加载实现名为IFeature
. 功能由主 IDE 框架通过 MEF 加载,然后要求实例化 的实例Control
,然后将其添加到选项卡页以形成插件的主要工作表面。到目前为止,一切都很好。
我现在正在努力保护 IDE 免受实施不当的插件的影响,但我对如何做到这一点没有好主意。例如,如果插件是一个引发异常的按钮,那么 IDE 框架代码根本不涉及该调用堆栈,因此我没有地方可以注入 try-catch。我已经连接到AppDomain.CurrentDomain.UnhandledException
andApplication.ThreadException
事件,它提供了针对以这种方式抛出的异常的顶级保护,但我希望能够在某些上下文中捕获它们,以便可以将异常绑定到IFeature
负责的实例问题。
我确实有创建一个派生类的想法Control
- 然后覆盖各种方法并实现 try-catch - 但是
一个。显得笨拙。
湾。不会防止控件反过来覆盖该方法。
C。将阻止使用任何非自定义控件(例如,Panel
)
是否有任何其他方法可以用来为我的框架提供更接近原因的保护,或者我是否坚持处理上述范围非常广泛的事件。
谢谢
马特