gpt4 book ai didi

c# - 需要 ClassInterfaceType.None 吗?

转载 作者:行者123 更新时间:2023-11-30 19:51:14 26 4
gpt4 key购买 nike

  1. 没有完全理解以下 from MSDN :

    ClassInterfaceType.None

    Indicates that no class interface is generated for the class. If no interfaces are implemented explicitly, the class can only provide late-bound access through the IDispatch interface. This is the recommended setting for ClassInterfaceAttribute. Using ClassInterfaceType.None is the only way to expose functionality through interfaces implemented explicitly by the class.

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

最佳答案

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

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

关于c# - 需要 ClassInterfaceType.None 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1435295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com