.NET 4.0中的新特性系列课程 等价类型.pdf

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.NET 4.0中的新特性系列课程 等价类型

.NET 4.0新特性: 等价类型 ((TType E Equiivallency)) YiYi ZhangZhang SDE II Microsoft 点击添加MSN机器人小新 点击添加MSN机器人小新 为您收听下载MSDN中文网络广播课程加油助力! 收听本次课程需具备的条件收听本次课程需具备的条件 • 对.NET以及C#有有一定了解 • 有使用过有使用过.NETNET COMCOM InteropInterop相关经验相关经验。。若若 使用过Interop操作Office更佳 Level 200 日程日程 • 为什为什么引入Type Equivalency • DemoDemo 11::本地类型本地类型 • 本地类型的嵌入 • Demo 2:原生代码的等价类型 •• 等价类型等价类型 • Demo 3:托管代码的等价类型 • 总结 Level 200 为什么需要为什么需要PIAPIA • 原生类型原生类型:托管类型管类型1:N – AssemblyAy : IntPtr GetStringg()() – AssemblyB: string GetString() • .NETNET类型系统基于身份类型系统基于身份 – Assembly – Type •• 不同身份的类型即使定义不同身份的类型即使定义一致也视为不同致也视为不同 类型 PIAPIA • 唯一的的 “官官方”版本的版本的Interop Assembly – 如如OOfficece的的PIA ,,由由OOfficece发行发行 • 强迫使用同一个类型 • 定义在注册表内定义在注册表内 • 注册在注册在GACGAC PIAPIA的问题的问题 • 部署困难 – 难以确定拥有者难以确定拥有者,,如如Windodowss的类型库的类型库 – 没有.NET无法部署PIA •• 程序需要自己安装程序需要自己安装.NETNET,并部署并部署PIAPIA • 无法自定义 • 过大:Excel PIA=1.2M •• 版本版本::PIAPIA较难跨版本使用较难跨版本使用 – 旧的程序需要重定向到新的PIA – 新程序无法使用老的PIA 解决方案解决方案 • .NET 4.0 CTP:等等价类型类型 – 又称为又称为NOO PIA • .NET 4.0 + 编译器共同支持 DEMO 1 本地类型本地类型 本地类型本地类型 • 如何打开: – 编译器通过编译器通过//L引用引用Excecel的的PIA – 在VS 中将Embed Interop Types设置为True • 编译时刻编译时刻EExcell PIAPIA类型嵌入主程序类型嵌入主程序 – 只引入引用到的本地类型和方法 • 不需要的方法由_VtblGapN_M跳过 – Assemblyy必须具有下列属性必须具有下列属性: • Guid • ImportedFromTypeLibImportedFromTypeLib • 主程序无需对Excel PIA的引用 本地类型本地类型 ((22 )) DEMO 2 原生代码的等价类型原生代码的等价类型 多个多个AssemblyAssembly之间的等价类型之间的等价类型 • TypeIdentifierAttribute指指定等等价性性 – 只需要多个类型中的只需要多个类型中的一个具有此个具有此Attribubutee • 等价类型由CLR支持 • 编译器负责嵌入类型和添加属性编译器负责嵌入类型和添加属性 • 支持等价支持等价的的类型有类型有:: – Interface – StStructt – Enum – Delegate DEMO 3 托管代码的等价类型托管代码的等价类型 托管代码下的等价类型托管代码下的等价类型 • 典型应典型应用:Addin模型模型 • 公用公用APIAPI 以以DLLDLL发布发布 – 要求:必须和IA定义一致: • [[assemblbly:GGuidid()]()] • [Assembly:ImportedFromTypeLib()] • Addin编译时刻嵌编

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档