- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
接口转换C#中不仅支持.Net平台,而且支持COM平台。为了支持COM和.Net,C#包含一种称为属性的独特语言特性。一个属性实际上就是一个C#类,它通过修饰源代码来提供元信息。属性使C#能够支持特定的技术,如COM和.Net,而不会干扰语言规范本身。C#提供将COM接口转换为C#接口的属性类。另一些属性类将COM类转换为C#类。执行这些转换不需要任何IDL或类工厂。现在部署的任何COM组件都可以在接口转换中使用。通常情况下,所需的调整是完全自动进行的。特别是,可以使用运行时可调用包装(RCW)从.NET框架访问COM组件。此包装将COM组件提供的COM接口转换为与.NET框架兼容的接口。对于OLE自动化接口,RCW可以从类型库中自动生成;对于非OLE自动化接口,开发人员可以编写自定义RCW,手动将COM接口提供的类型映射为与.NET框架兼容的类型。◆使用ComImport引用COM组件COMInterop提供对现有COM组件的访问,而不需要修改原始组件。使用ComImport引用COM组件常包括下面几个方面的问题:1、创建COM对象。
2、确定COM接口是否由对象实现。
3、调用COM接口上的方法。
4、实现可由COM客户端调用的对象和接口。(1)创建COM类包装要使C#代码引用COM对象和接口,需要在C#中包含COM接口的定义。完成此操作的最简单方法是使用TlbImp.exe(类型库导入程序),它是一个包括在.NET框架SDK中的命令行工具。TlbImp将COM类型库转换为.NET框架元数据,从而有效地创建一个可以从任何托管语言调用的托管包装。用TlbImp创建的.NET框架元数据可以通过/R编译器选项包括在C#内部版本中。如果使用VisualStudio开发环境,则只需添加对COM类型库的引用,将为您自动完成此转换。TlbImp执行下列转换:
1)、COMcoclass转换为具有无参数构造函数的C#类。
2)、COM结构转换为具有公共字段的C#结构。
检查TlbImp输出的一种很好的方法是运行.NET框架SDK命令行工具Ildasm.exe(Microsoft中间语言反汇编程序)来查看转换结果。虽然TlbImp是将COM定义转换为C#的首选方法,但也不是任何时候都可以使用它(例如,在没有COM定义的类型库时或者TlbImp无法处理类型库中的定义时,就不能使用该方法)。在这些情况下,另一种方法是使用C#属性在C#源代码中手动定义COM定义。创建C#源映射后,只需编译C#源代码就可产生托管包装。执行COM映射需要理解的主要属性包括:1)、ComImport:它将类标记为在外部实现的COM类。2)、Guid:它用于为类或接口指定通用唯一标识符(UUID)。3)、InterfaceType,它指定接口是从IUnknown还是从IDispatch派生。4)、PreserveSig,它指定是否应将本机返回值从HRESULT转换为.NET框架异常。(2)声明COMcoclassCOMcoclass在C#中表示为类。这些类必须具有与其关联的ComImport属性。下列限制适用于这些类:1)、类不能从任何其他类继承。2)、类不能实现任何接口。3)、类还必须具有为其设置全局唯一标识符(GUID)的Guid属性。以下示例在C#中声明一个coclass://声明一个COM类FilgraphManager[ComImport,Guid(E436EBB3-524F-11CE-9F53-0020AF0BA770)]classFilgraphManager{}C#编译器将添加一个无参数构造函数,可以调用此构造函数来创建COMcoclass的实例。(3)创建COM对象COMcoclass在C#中表示为具有无参数构造函数的类。使用new运算符创建该类的实例等效于在C#中调用CoCreateInstance。使用以上定义的类,就可以很容易地实例化此类:classMainClass{publicstaticvoidMain(){FilgraphManager
您可能关注的文档
- 元代文学元代文学概说.ppt
- 中国医学科学院肿瘤医院GCP中心系统录入指引.pptx
- 书签式三项并列关系图表.pptx
- 闽南语歇後语.ppt
- 高等职业技术学校数控技术类教材.ppt
- 9我的战友邱少云 课堂实录.docx
- 15 真理诞生于一百个问号之后 +公开课一等奖创新教案+素材.docx
- 17 刘胡兰 公开课一等奖创新教案 (共2课时).docx
- 部编版六年级上册28 有的人——纪念鲁迅有感(+素材).docx
- 2026年中考语文作文热点人物素材积累运用国际奥委会终身名誉主席巴赫 素材.docx
- 第四单元 习作二十年后的家乡 讲义-语文五年级上册统编版.docx
- 《西游记》的孙悟空有多强?《西游记》的宇宙学和神仙的介绍 素材.docx
- 第三单元名著导读《儒林外史》知识点梳理 统编版语文九年级下册(讲义).docx
- 2025年山东淄博市市属事业单位招聘综合类岗位工作人员24人笔试高频难、易错点备考题库含答案详解.docx
- 2025年山东烟台市莱山区事业单位招聘5人笔试高频难、易错点备考题库及答案详解一套.docx
- 2025年山东淄博周村区事业单位招聘综合类岗位28人笔试高频难、易错点备考题库及参考答案详解.docx
- 2025年江苏苏州卫生职业技术学院博士专项招聘31人笔试备考题库参考答案详解.docx
- 云南文山富宁县机关事务管理局招聘编外人员通告笔试高频难、易错点备考题库带答案详解.docx
- 第19课+亚非拉国家的新发展(课件)-2025-2026学年九年级历史下册同步精品课件+教案(统编版2016).pptx
- 第10课你快乐所以我快乐(课件)心理健康华中师大版六年级全一册.pptx
最近下载
- 埋弧焊用氟碱型烧结焊剂征求意见稿.pdf
- 医疗器械独立软件(符合ISO 13485、MDR、FDA 21 CFR Part 820)软件风险管理控制程序2025年.docx
- 2022海上风电施工新技术.docx VIP
- 固碱工艺_教程.ppt VIP
- 九年级语文多文本阅读技巧 教学课件.pptx VIP
- 人教版三年级音乐上册:《森林水车》教案2[精品].doc VIP
- 浪潮 InCloud OpenStack 解决方案.pdf VIP
- 《肺结核患者的护理》课件.ppt VIP
- 常见临床研究设计要点及统计方法题库及答案-2025年华医网继续教育.docx VIP
- 食材配送操作规范流程明细.docx VIP
原创力文档


文档评论(0)