我尽量避免在C#中使用Type Libraries进行COM自动化,而是使用dynamic关键字在运行时解析类型。 除了尝试定义事件处理程序时,这很好。
我试图用这种方式定义它:
_COMObject.OnStop += new Action(OnStop);
然而,原始COM对象定义了自己的EventHandler类型,没有参数且没有返回值。 因此,当然Action不是同一类型,这会导致RuntimeBinderException声明它不能将Action类型转换为ComObjectCustomEventHandler,尽管它们具有相同的签名。
我需要像动态委托这样的东西,但我还没弄清楚如何定义它。