没有从 MSDN得到以下信息:
ClassInterfaceType.None
表示没有为该类生成类接口。如果没有显式实现接口,则类只能通过
IDispatch
接口提供后期绑定访问。这是 的推荐设置ClassInterfaceAttribute
。UsingClassInterfaceType.None
是通过类显式实现的接口公开功能的唯一方法。[ComVisible(true)]
COM可见性是必须的吗?
问问题
3872 次
1 回答
9
有关第一个问题的扩展,请参阅此博客文章。关键是,除非您指定ClassInterfaceType.None
生成额外的接口,否则如果您更改方法的顺序、更改它们的签名或删除其中一些,这可能会导致二进制兼容性问题。一个更好的选择是显式定义一个接口并从它继承你的类,指定ClassInterfaceType.None
.
ComVisible(true)
不是 COM 可见性的必要条件。默认情况下,公共类的所有公共方法和所有公共类都是 COM 可见的,所有其他实体都是 COM 不可见的。如果你需要改变它,你可以使用 ComVisible 属性,通常是为了减少 COM 可见类的数量,因为对于每个 COM 可见类,都会生成注册表项和类型库项,这会导致不必要的注册表污染并膨胀类型库。IMO 最好用 ComVisible 明确标记所有公共实体。
于 2009-09-17T05:18:34.190 回答