技术开发 频道

重用托管代码中的Classic COM 组件


【IT168 专稿】

映射C#中的方法参数关键字到IDL的方向属性

    当在C#(例如:out, ref)映射方法参数关键词到它们相应的方向属性(例如:[in], [out], [in,out], [out,retval])时,Interop会使用一些特定的规则。

   1. 当C#中,方法参数没有被关键词认为是合格的,它通常被映射到IDL中的[in]属性,担当按值传递语法。
   2. C#方法中的返回值总是被映射到IDL中的[out, retval]双向属性。
   3. Ref方法参数关键词被映射成IDL的[in,out]双向属性。
   4. Out方法参数关键词被映射成IDL里的[out]双向属性。
   5. 使用方发的返回值,不会返回 .NET世界里发生的错误,但是,相反,这些错误会被作为异常。

     在这里阅读更多的关于错误处理的内容。这里有一些例子,是关于C#参数类型是怎样映射成IDL里的双向属性的。



重用托管代码中的Classic COM 组件

    Interop其中一个优秀的特点就是你可以让你的托管 .NET类型使用继承模式或者内含包容模式,以此来重用功能(此功能由现有的COM组件提供)。这一特点的好处就是:一个使用组件的应用程序永远不会知道托管组件正在内部从Classic COM 组件中平衡非托管代码执行。我们可以研究托管 .NET组件重用现有的COM组件的某些方法。

    ? Mixed-Mode inheritance 混合模式继承
    ? Mixed-Mode containment 混合模式包容

    我们把这个叫做混合模式,因为我们有托管类型重用代码,以及在非托管 COM组件中,早已有可以利用的功能逻辑。

0
相关文章