仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 891|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET编程:基于C#的接口基本教程之六

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 22:29:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。  第六节、接口转换
  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客户端挪用的工具和接口。
  创立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框架非常。
  声明COMcoclass

  COMcoclass在C#中暗示为类。这些类必需具有与其联系关系的ComImport属性。以下限定合用于这些类:
  1、类不克不及从任何其他类承继。
  2、类不克不及完成任何接口。
  4、类还必需具无为其设置全局独一标识符(GUID)的Guid属性。
  以下示例在C#中声明一个coclass:
//声明一个COM类FilgraphManager
[ComImport,Guid("E436EBB3-524F-11CE-9F53-0020AF0BA770")]
classFilgraphManager
{}

  C#编译器将增加一个无参数机关函数,能够挪用此机关函数来创立COMcoclass的实例。
共4页:上一页1[2][3][4]下一页

捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。
海妖 该用户已被删除
沙发
发表于 2015-1-19 15:20:49 来自手机 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
板凳
 楼主| 发表于 2015-1-27 09:29:36 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-5 06:46:12 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
分手快乐 该用户已被删除
5#
发表于 2015-2-11 07:11:57 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
老尸 该用户已被删除
6#
发表于 2015-3-1 23:33:29 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
精灵巫婆 该用户已被删除
7#
发表于 2015-3-11 01:19:20 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
简单生活 该用户已被删除
8#
发表于 2015-3-17 18:08:23 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
深爱那片海 该用户已被删除
9#
发表于 2015-3-24 18:14:03 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-11 02:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表