帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程 >
基于C#的接口基础教程之六(1)
作者:黎宇/Yesky 发布时间:2005-03-12 来源:ASPCOOL
     第六节、接口转换
  
    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组件
  COM Interop 提供对现有 COM 组件的访问,而不需要修改原始组件。使用ComImport引用COM组件常包括下面 几个方面的问题:
  
    1、创建 COM 对象。
  
    2、确定 COM 接口是否由对象实现。
  
    3、调用 COM 接口上的方法。
  
    4、实现可由 COM 客户端调用的对象和接口。
  
    创建 COM 类包装
  
    要使 C# 代码引用COM 对象和接口,需要在 C# 中包含 COM 接口的定义。完成此操作的最简单方法是使用 TlbImp.exe(类型库导入程序),它是一个包括在 .NET 框架 SDK 中的命令行工具。TlbImp 将 COM 类型库转换为 .NET 框架元数据,从而有效地创建一个可以从任何托管语言调用的托管包装。用 TlbImp 创建的 .NET 框架元数据可以通过 /R 编译器选项包括在 C# 内部版本中。如果使用 Visual Studio 开发环境,则只需添加对 COM 类型库的引用,将为您自动完成此转换。
  
    TlbImp 执行下列转换:
  
    1、COM coclass 转换为具有无参数构造函数的 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 框架异常。
  

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·.NET框架中基于角色的安全性(2)  (2005-03-12)
 ·.NET框架中基于角色的安全性(1)  (2005-03-12)
 ·基于C#的接口基础教程之六(5)  (2005-03-12)
 ·基于C#的接口基础教程之六(4)  (2005-03-12)
 ·基于C#的接口基础教程之六(3)  (2005-03-12)
 ·基于C#的接口基础教程之六(2)  (2005-03-12)
 ·.NET框架中基于角色的安全性(3)  (2005-03-12)
 ·基于wap协议的wml开发示例,在Op  (2005-03-12)
 ·基于Java&XML技术构建植物病虫害  (2005-03-12)
 ·使用J2EE建立基于XML的网络服务  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统