学习C#中调用COM,后期绑定(以及对WinHttp COM对象的C#封装)

本文介绍了如何在C#中使用后期绑定来创建和调用COM对象,以WinHttp.WinHttpRequest.5.1为例,展示了创建COM对象的步骤,并封装了一个DxComObject类来简化操作。接着,进一步封装了DxWinHttp类,专门针对WinHttp对象,实现了更便捷的HTTP请求操作,如设置请求头、发送数据等。通过这样的封装,可以减少重复代码,提高代码可读性和复用性。
摘要由CSDN通过智能技术生成

  开始学习C#了,没打算从语法一点一点的看起!所以上来就直接开始代码了!同时也和Delphi之间的某些操作进行比较比较!于是想到了一个朋友用Delphi写的通过ip138查询手机号码的例子,他用的是IdHttp来进行提交操作的。我在之前写飞信的控件的时候,用的http是Windows自己内部的COM库:WinHttp.WinHttpRequest.5.1,这个玩意用起来还是相当方便的,于是就乘着学习,借机来在C#中动态创建这个COM对象。要知道在Delphi中创建和调用一个COM对象,那是相当方便的。直接一个CreateOleObject就能创建一个COM对象了,然后COM对象中的方法就能够直接通过这个东西直接调用。那么在C#中是否依然如此简洁?不晓得,是因为我刚接触还是咋地,折磨了半天,实在没摸索到简单的方法来创建COM对象(当然,那种通过引用添加组件库到C#环境中去的方法不算,因为这个方法有一定的弊端,那便是当用户换了环境,重新来编译本程序的时候,由于新的环境中可能并没有引用这个库,所以直接编译会出错,于是咱们又要重新添加引用一次本库!),唯一的办法就是后期绑定COM对象(至于是否有简单方法,我不知道的,因为才学1天)。查阅了相关的一些资料之后得知,首先要通过COM对象名称获得这个对象在系统全局的一个ProgId,然后通过这个ProgId获得这个对象的类型:

System.Type _ObjType = System.Type.GetTypeFromProgID(ComName);

然后通过这个类型来创建一个对象接口

object ComInstance= System.Activator.CreateInstance(_ObjType);       

之后,对该对象方法的调用都要通过type的InvokeMember方法来进行比如:

return ComType.InvokeMember(MethodName,System.Reflection.BindingFlags.InvokeMethod,null,ComInstance,args);

哎!写起来的代码量还真是有点大呢!于是,产生了一个想法,将这个COM对象后期绑定的玩意封装起来做一个公共的,能省多少代码就省多少代码,尽量的减少代码量:

代码:

代码写的也不复杂,就这么几句,但是我想应该看起来更加明亮化了。

比如,我现在通过这个封装操作库来通过ip138查询手机号码的归属地

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值