Source: CSDN Blog

CSDN Blog ComInterfaceType

using System; namespace System.Runtime.InteropServices { [ComVisible (true)] [Serializable] public enum ComInterfaceType { InterfaceIsDual, InterfaceIsIUnknown, InterfaceIsIDispatch } }AutoDispatch:表示,该类仅支持后期绑定 COM 客户端。 一个 dispinterface 类自动向 COM 客户端在请求上公开。 类型库生成的 Tlbexp.exe (类型库导出程序) 不包含类型信息 dispinterface 为了防止客户端缓存的 Dispid 的接口。 dispinterface 没有展现中所述的版本控制问题 ClassInterfaceAttribute 因为客户端可以仅后期绑定到该接口。AutoDual:指示双类接口自动生成的类并向 COM 公开。 类型信息是生成类接口,类型库中发布。 使用 AutoDual 由于中所述的版本控制限制是强烈建议您不要 ClassInterfaceAttribute。None:指示没有类接口时生成的类。 如果显式不实现任何接口,该类可以仅提供通过后期绑定访问 IDispatch 接口。这是推荐的设置 ClassInterfaceAttribute。 使用 ClassInterfaceType.None 是通过由类显式实现的接口公开功能的唯一方法。限制将双绑定接口选项用于类接口。双绑定接口支持 COM 客户端对接口成员进行早期和后期绑定。在设计时和测试期间,您可能会发现将类接口设置为双绑定非常有用。对于从不会修改的托管类(及其基类),此选项也是可以接受的。在其他所有情况下,应避免将类接口设置为双绑定。自动生成的双绑定接口可能会适用于少数的情况,而在多数情况下,它会带来与版本相关的复杂性。例如,使用派生类的类接口的 COM 客户端很容易在遇到对基类的更改时中断。当第三方提供基类时,您将无法控制类接口的布局。此外,与仅调度接口不同,双绑定接口 (ClassInterface.AutoDual) 在导出的类型库中提供了类接口的说明。这样的说明会促使后期绑定的客户端在运行时缓存 DispId。作者:heyuchang666 发表于2018/1/5 11:09:55 原文链接阅读:0 评论:0 查看评论

Read full article »
Est. Annual Revenue
$25-100M
Est. Employees
100-250
CEO Avatar

CEO

Update CEO

CEO Approval Rating

- -/100

Read more