【问题标题】:Need of ClassInterfaceType.None?需要 ClassInterfaceType.None 吗?
【发布时间】:2010-11-28 22:46:52
【问题描述】:
  1. 没有完全得到以下from MSDN

    ClassInterfaceType.None

    表示没有类接口 为类生成。如果不 接口是显式实现的, 该类只能提供后期绑定 通过IDispatch访问 界面。这是推荐的 ClassInterfaceAttribute 的设置。 使用ClassInterfaceType.None 是 公开功能的唯一方法 通过实现的接口 由类明确。

  2. [ComVisible(true)] 是 COM 可见性的必要条件吗?

【问题讨论】:

    标签: c# .net com interop com-interop


    【解决方案1】:

    请参阅this blog post 了解第一个问题的展开。关键是除非您指定ClassInterfaceType.None,否则会生成一个额外的接口,如果您更改方法的顺序、更改它们的签名或删除其中一些,这可能会导致二进制兼容性问题。一个更好的选择是显式定义一个接口并从它继承你的类,指定ClassInterfaceType.None

    ComVisible(true) 对于 COM 可见性不是必需的。默认情况下,公共类的所有公共方法和所有公共类都是 COM 可见的,所有其他实体都是 COM 不可见的。如果你需要改变它,你可以使用 ComVisible 属性,通常是为了减少 COM 可见类的数量,因为对于每个 COM 可见类,都会生成注册表项和类型库项,这会导致不必要的注册表污染并膨胀类型库。 IMO 最好用 ComVisible 明确标记所有公共实体。

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 1970-01-01
      • 2013-02-13
      • 2011-02-25
      • 2010-12-17
      • 2012-02-09
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多