c#互操作性入门系列(一):c#中互操作性介绍

<强>

<李>

c#互操作性入门系列(一):c#平台下互操作性介绍

<李>

c#互操作性入门系列(二):使用平台调用调用Win32函数

<李>

c#互操作性入门系列(三):平台调用中的数据封送处理

<李>

c#互操作性入门系列(四):在c#中调用COM组件


<强>本专题概要: <李>

<强>引言

<李>

<>强平台调用

<李>

<强> c++互操作(互操作)

<李>

<强> COM互操作(互操作)



这个系列是在c#基础知识中遗留下来的一个系列的,因为在c# 4.0中的一个新特性就是对COM互操作改进,然而COM互操作性却是。net平台下其中一种互操作技术,为了帮助大家更好的了解。净平台下的互操作技术,所以才有了这个系列。然而有些朋友们可能会有这样的疑问,“为什么我们需要掌握互操作技术的呢?“对于这个问题的解释就是,掌握了。NET平台下的互操作性技术可以帮助我们在. NET中调用非托管的dll和COM组件. .净是建立在操作系统的之上的一个开发框架,其中。净类库中的类也是对Windows API的抽象封装,然而。净类库不可能对所有Windows API进行封装,当。网中没有实现某个功能的类,然而该功能在Windows API被实现了,此时我们完全没必要去自己在。网络中自定义个类,这时候就可以调用Windows, API中的函数来实现,此时就涉及到托管代码与非托管代码的交互,此时就需要使用到互操作性的技术来实现托管代码和非托管代码更好的交互. .净平台下提供了3种互操作性的技术: <李>

平台调用(p/Invoke),即平台调用,主要用于调用C库函数和Windows API

<李>

c++ Introp,主要用于托管c++(托管c++)中调用c++类库

<李>

COM互操作,主要用于在。NET中调用COM组件和在COM中使用。净程序集。

下面就对这3种技术分别介绍下。,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, <强> <强> 强。关于具体的使用和与平台调用的比较,这里就不多介绍,我将会在后面的专题中具体介绍。 在。网络中使用COM对象,主要有3种方法: <李data-mce -> <李data-mce -> <李>

使用TlbImp工具为COM组件创建一个互操作程序集来绑定早期的COM对象,这样就可以在程序中添加互操作程序集来调用COM对象

<李>

通过反射来后期绑定COM对象

<李>

通过p/Invoke创建COM对象或使用c++互操作为COM对象编写包装类

但是我们经常使用的都是方法一,下面介绍下使用方法一在。网络中使用COM对象的步骤: <李>

找到要使用的COM组件并注册它。

<李>

. net公共语言运行时通过COM可调用包装(COM可调用包装器,即CCW)来完成与COM类型库的交互.CCW可以使COM客户端认为是在与普通的COM类型交互,同时使。net组件认为它正在与托管应用程序交互。在这里。实现在COM使用。净类型的基本步骤如:1。在c#项目中添加互操作特性 c#互操作性入门系列(一):c#中互操作性介绍”> 2。生成COM类型库并对它进行注册以供COM客户端使用<img src=c#互操作性入门系列(一):c#中互操作性介绍