C#4.0新增功能04 嵌入的互操做类型

从 .NET Framework 4 开始,公共语言运行时支持将 COM 类型的类型信息直接嵌入到托管程序集中,而不要求托管程序集从互操做程序集中获取 COM 类型的类型信息。 因为嵌入式类型信息仅包含托管程序集实际使用的类型和成员,所以两个托管程序集可能具备相同 COM 类型的不一样视图。 每一个托管程序集都有不一样的 Type 对象来表示其 COM 类型视图。公共语言运行时支持接口、结构、枚举和委托等不一样视图之间的类型等效性。html

类型等效性意味着从一个托管程序集传递到另外一个托管程序集的 COM 对象能够转换为接收程序集中适当的托管类型。api

类型等效性和嵌入式互操做类型简化了使用 COM 组件的应用程序和加载项的部署,由于无需与应用程序一块儿部署互操做程序集。 若是共享 COM 组件的开发人员但愿较早版本的 .NET Framework 使用其组件,他们仍须建立主互操做程序集 (PIA)。ide

类型等效性

COM 类型的等效性支持接口、结构、枚举和委托。 若是知足如下全部条件,则 COM 类型符合等效条件:ui

  • 类型是两个接口、两个结构、两个枚举或两个委托。spa

  • 类型具备相同标识,以下节所述。htm

  • 两种类型都符合类型等效性,如针对类型等效性标记 COM 类型部分所述。对象

类型标识

范围和标识匹配时,肯定两种类型具备相同标识,换句话说,若是它们各自具备 TypeIdentifierAttribute 属性,而且两个属性都具备匹配的 Scope 和 Identifier 属性。 Scope的比较不区分大小写。blog

若是一个类型不具备 TypeIdentifierAttribute 属性,或者若是它有一个不指定范围和标识符的 TypeIdentifierAttribute 属性,仍可将该类型视为等效性,以下所示:接口

针对类型等效性标记 COM 类型

可经过两种方式将类型标记为符合类型等效性:

请参阅

 

相关文章
相关标签/搜索