Fre*_*els 4 .net c# com comvisible
我想向COM公开.NET类.这很容易:
ComVisible
Guid
接口分配了一个没什么大不了.这一切都有效.但是,现在我的问题是:我在该类中有一些事件,我也希望向COM公开.
这应该没什么大不了的,但是,当我看一些例子(由MS'ComInterop工具生成的fi代码)时,我看到事件是在一个单独的接口中声明的.那就是:应该是的类ComVisible
,实现2个接口:
ComVisible
ComVisible
.现在,我的问题是:为什么?这是什么原因?
为什么ComVisible
在另一个接口中定义了事件,为什么它们只是在包含应该是的方法和属性的接口中没有定义ComVisible
?
这背后的原因是什么?
这是由于COM事件的工作方式.COM不知道委托是什么,因此它的事件是使用回调接口实现的.希望接收事件的对象实现事件接口,将其传递给发送者(您的代码),并且发送者在其上调用方法.事件接口因此是独立的,因为您不希望对您的事件感兴趣的人必须实现您的接口的其余部分.
在幕后,事件接口使用"连接点"进行管理,允许收件人将其回调接口连接到发件人.此实现需要各种COM接口(IConnectionPoint,IConnectionPointContainer,IEnumConnectionPoints,IEnumConnections)和一些繁琐的内务处理.如果您在例如本机C++中实现COM事件,则必须关注这些接口.幸运的是,作为.NET程序员,您不必实现它们,因为.NET会为您完成它.
归档时间: |
|
查看次数: |
2459 次 |
最近记录: |