在我基于 MEF 的应用程序中,有些模块使用表单,但有些不使用。
我希望能够响应这些表单的关闭,但似乎无法弄清楚如何做到这一点。模块类型基于接口,使用表单的模块类型继承一个基类,该基类继承自Windows.Forms.Form
.
例如
public partial class SwatchForm : ModuleForm, IAcquisition
在哪里
public partial class ModuleForm : Form
由于并非所有继承IAcquisition
(或我的其他模块接口)的东西都继承自ModuleForm
,我尝试了这个:
if (this.AcquisitionModule.GetType().IsSubclassOf(typeof(ModuleForm)))
{
(ModuleForm)(this.AcquisitionModule).ModuleFormClosed += whatever....
}
但它仍然抱怨IAcquisition
没有什么叫ModuleFormClosed
。
我考虑过使用异常,但这感觉有点像黑客。有没有办法使用事件来做到这一点?