首页 > Windows开发 > 详细

《Inside C#》笔记(十五) 非托管代码 下

时间:2017-07-26 01:13:10      阅读:375      评论:0      收藏:0      [点我收藏+]

 

二编写不安全代码

a)fixed关键字

 

技术分享

技术分享

 

 

 

代码中体现了fixed的用法:fixed (type* ptr= expression) { …};type是类似int*这样的非托管类型或void类型,expression是可以返回为type*指针的任意表达式,被fixed的变量只能在{…}中使用。

上面的代码运行后,foo.x=42。就只能看懂这一点了。

 

三 COM互操作

COM组件与.NET运行时的交互是通过COM Interop进行的。这儿涉及到很多COM组件的知识,以前只是在操作Word时用过Microsoft.Office.Interop.Word,这里只打算大概了解一下。

a)实例的COM组件为AirlineInfo COM,公开方法为:

 

技术分享

 

 

.NET只能使用包含元数据(metadata)的组件,而COM内部不是这样的,大概是包含一些注册和类似接口的实现。所以,在操作COM之前,为其生成对应的元数据。这项工作由元数据层进行,它负责处理与数据类型相关的信息,然后运行时基于这些类型信息生成RCW(Runtime Callable Wrapper 运行时可调用包装)。RCW负责COM对象的激活、Marshal、生命周期管理等事项。

 

技术分享

 

 

b)使用tlbimp.exe可以根据后缀为.tlb的COM文件生成.dll文件,然后就可以像使用普通的类一样使用dll中的类和元数据了。

c)使用b中提的方法(早绑定)会进行强类型检查、自动完成等特性,但有时无法在编译时就知道COM对象的元数据,这时就需要使用晚绑定的方法了。

 

技术分享

?

 

只要知道COM组件中某个方法名称,就可以使用Type.GetTypeFromProgID反射调用方法了。

 

学习资料:Inside C# by Tom Archer

 

《Inside C#》笔记(十五) 非托管代码 下

原文:http://www.cnblogs.com/zhixin9001/p/7237048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!