码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2017-07-26 01:58:59      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:hal   ati   https   foo   span   cga   处理   这一   http   

 

二编写不安全代码

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#》笔记(十五) 非托管代码 下

标签:hal   ati   https   foo   span   cga   处理   这一   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!