com组件对象与.net类对象的相互转换(二).docx
《com组件对象与.net类对象的相互转换(二).docx》由会员分享,可在线阅读,更多相关《com组件对象与.net类对象的相互转换(二).docx(6页珍藏版)》请在优知文库上搜索。
1、com组件对象与.net类对象的相互转换(二)COM组件对象与.NET类对象的相互转换(二)作者:独孤九剑email:mikaiyue日期:8/14/20014:49:50PM2.实例演示一(不显示定义接口)创建一个最简洁的C#Console工程,其程序如下所示:usingSystem;usingSystem.Runtime.InteropServices;namespaceCSharpServer/缺省的是ClassInterfaceType.AutoDispatch,该方式下只生成dispatch接口只能被运用script,VB等Iatebinding方式的COM客户运用ClassInte
2、rfaceAttribute(ClassInterfaceType.AutoDual)publicclassSharpObjectprivatestringmStrName;publicSharpObject()publicstringName/Property:Name,Get/Setget(returnm_strName;setmstrName=value;(2)在工程的属性中设置RegisterforCOMinterop为Trueo这样编译后就会生成CSharpServer.tlb文件,并且自动将其注册。吩咐行吩咐regasm有同样的效果。注册表内容如卜丁HKEY-C1.SSES-RTC
3、1.SID88994E22-E99F-320B-908C-96E32B7BFE56gCSharPSerVer.SharpObjectInprocServer32dll=C:WINNTSystem32mscoree.ThreadingModcl=BothAssembly=CSharpServer,Culture=11cutral,RuntimeVersion=Vl.Class=CSharpServer.SharpObjectVersion=1.O.583.39183,PublicKeyToken=nul1O.2914CodeBase=fi1c:/E:/cm/netC%23exerCSharpSe
4、rverbin/Debug/CSharpServer.dllProgId=CSharPServer.SharpObjectCSharpServer.tlb文件中包含了组件的类型库信息,包括C1.SID.IID,接口定义等。而组件的真正实现,对.NET对象的调用则是由通用语言运行时库mscoree.dll完成的。可以说mscoree.dl1和CSharpServer.tlb加起来就是runtime为CSharPSerVer这个.NET类生成的CCWo(3)写一个简洁的VBScript程序test.vbs,如下所示:DimobjSetobj=CreateObject(CSharpServer.Sh
5、arpObject)obj.Name=ChangMingMsgBoxMyNameisobj.Name双击该文件,胜利运行。(4)创建一个最简洁的MFC对话框工程,加入以下代码:/这里应当用rawinterfaces_only,因为SharPObjeCt缺省的从ObjCC假如不加这个选项的话,也要为Object的公用函数和属性生成包装函数,而ObjeCt:GetTyPe返回Type型,而没有为类Type生成包装接口,所以编译时会出错#import.CSharpServerbindebugCSharpServer.11braw_interfaces_on1yno_namespacenamed_gu
6、ids.CoInitia1.ize(NU1.1.);方法一因为运用了raw_interfaces_only,所以没有生成属性Name的包装函数GetName,PutName.SharpObjectPtrpSharpObject(_Uuidof(SharpObject);pSharpObject-put_Name(_bstr_t(ChangMing);BSTRStrName:PSharPObjeCt-get_Name(StrName);AfxMessageBox(MyNameis+_bstr_t(strName):方法二*_SharpObject*pSharpObjcct=NU1.1.;HRES
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- com 组件 对象 net 相互 转换
