日期:2014-05-17  浏览次数:20892 次

用C#创建一个COM组件,一定要指定事件的接口吗?
像下面这样的:

 [Guid("D11FEA37-AC57-4d39-9522-E49C4F9826BB"),  
    InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]  
    public interface MyCom_Events  
    {  
    }  

是否一定要存在? 没有event接口可不可以?

------解决方案--------------------
是的,必须使用接口,因为原生的编程语言没有委托或者方法签名的概念,是靠接口匹配的。
------解决方案--------------------
InterfaceType表求向COM公开的方式,这里选择为以调度的方式向COM公开。 如果不指定事件接口将会有默认值InterfaceIsDual,具体可以参考ComInterfaceType 枚举定义
关于实现可以参考:
http://www.cnblogs.com/Real_Dream/articles/1577938.html和
http://www.cnblogs.com/panlijiao/archive/2012/10/14/2773882.html