加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:39:05 所属栏目:百科 来源:网络整理
导读:连载目录????【已更新最新开发文章,点击查看详细】 从 .NET Framework 4 开始,公共语言运行时支持将 COM 类型的类型信息直接嵌入到托管程序集中,而不要求托管程序集从互操作程序集中获取 COM 类型的类型信息。? 由于嵌入式类型信息仅包含托管程序集实际使
连载目录????【已更新最新开发文章,点击查看详细】

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

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

类型等效性和嵌入式互操作类型简化了使用 COM 组件的应用程序和加载项的部署,因为无需与应用程序一起部署互操作程序集。 如果共享 COM 组件的开发人员希望较早版本的 .NET Framework 使用其组件,他们仍须创建主互操作程序集 (PIA)。

类型等效性

COM 类型的等效性支持接口、结构、枚举和委托。?如果满足以下所有条件,则 COM 类型符合等效条件:

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

  • 类型具有相同标识,如下节所述。

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

类型标识

范围和标识匹配时,确定两种类型具有相同标识,换句话说,如果它们各自具有?TypeIdentifierAttribute?属性,并且两个属性都具有匹配的?Scope?和?Identifier?属性。?Scope的比较不区分大小写。

如果一个类型不具有?TypeIdentifierAttribute?属性,或者如果它有一个不指定范围和标识符的?TypeIdentifierAttribute?属性,仍可将该类型视为等效性,如下所示:

  • 对于接口,使用?GuidAttribute?的值而不使用?TypeIdentifierAttribute.Scope?属性,使用?Type.FullName?属性(即类型名称,包括命名空间),而不使用?TypeIdentifierAttribute.Identifier?属性。

  • 对于结构、枚举和委托,使用包含程序集的?GuidAttribute?而不使用?Scope?属性,使用?Type.FullName?属性而不使用?Identifier?属性。

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

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

  • 将?TypeIdentifierAttribute?属性应用于该类型。

  • 将该类型设为 COM 导入类型。?若接口有?ComImportAttribute?属性,则它是 COM 导入类型。?如果定义了其程序集具有?ImportedFromTypeLibAttribute?属性,则接口、结构、枚举或委托是 COM 导入类型。

请参阅

  • IsEquivalentTo
  • 在托管代码中使用 COM 类型
  • 将类型库作为程序集导入

?

连载目录????【已更新最新开发文章,点击查看详细】

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读