C# COM接口转换经验总结

开发 后端
这里介绍C# COM接口转换,C#中不仅支持.Net 平台,而且支持COM平台。为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性。

本文向大家介绍C# COM接口转换,可能好多人还不知道C# COM接口转换,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

C#中不仅支持.Net 平台,而且支持COM平台。为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性。一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息。属性使 C# 能够支持特定的技术,如 COM 和 .Net,而不会干扰语言规范本身。C# 提供将COM接口转换为 C#接口的属性类。另一些属性类将C# COM接口转换为C# 类。执行这些转换不需要任何 IDL 或类工厂。

现在部署的任何COM 组件都可以在接口转换中使用。通常情况下,所需的调整是完全自动进行的。

特别是,可以使用运行时可调用包装 (RCW) 从 .NET 框架访问 COM 组件。此包装将 COM 组件提供的C# COM接口转换为与 .NET 框架兼容的接口。对于 OLE 自动化接口,RCW 可以从类型库中自动生成;对于非 OLE 自动化接口,开发人员可以编写自定义 RCW,手动将 COM 接口提供的类型映射为与 .NET 框架兼容的类型。

下面是接口转换的C#程序:

  1. using System.Runtime.InteropServices;  
  2. // 声明一个COM接口 IMediaControl  
  3. [Guid("56A868B1-0AD4-11CE-B03A-0020AF0BA770"),  
  4. InterfaceType(ComInterfaceType.InterfaceIsDual)]  
  5. interface IMediaControl // 这里不能列出任何基接口  
  6. {  
  7. void Run();  
  8. void Pause();  
  9. void Stop();  
  10. void GetState( [In] int msTimeout, [Out] out int pfs);  
  11. void RenderFile(  
  12. [In, MarshalAs(UnmanagedType.BStr)] string strFilename);  
  13. void AddSourceFilter(  
  14. [In, MarshalAs(UnmanagedType.BStr)] string strFilename,  
  15. [Out, MarshalAs(UnmanagedType.Interface)] out object ppUnk);  
  16. [return : MarshalAs(UnmanagedType.Interface)]  
  17. object FilterCollection();  
  18. [return : MarshalAs(UnmanagedType.Interface)]  
  19. object RegFilterCollection();  
  20. void StopWhenReady();  
  21. }  

【编辑推荐】

  1. C# this关键字详解
  2. C#调用析构方法详解
  3. C#释放托管资源简单描述
  4. C#单路代理简单分析
  5. C#文法产生式概述
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-13 18:13:27

C#学习经验

2009-08-21 17:42:36

C#调用API

2009-08-11 14:20:41

C# .NET学习经验

2009-08-24 14:56:01

C#连接Access

2009-09-01 13:10:39

C#读取Word

2009-08-27 11:21:36

C# override

2009-09-18 10:21:13

C#数组C#串操作

2009-09-01 13:00:05

C#实现Windows

2009-08-07 09:47:17

C#枚举C#数组

2009-08-27 15:45:30

C#正则表达式

2009-08-26 15:39:08

C#隐式类型局部变量

2015-09-30 14:40:47

WebAPI接口设计

2009-09-03 13:48:20

C#实现Web服务器功

2009-10-15 09:27:00

2009-09-02 14:18:08

C#声明COM接口

2009-08-24 09:55:26

C#接口转换

2010-02-02 15:44:18

C++遍历集合

2009-09-29 16:32:11

OJB Hiberna

2009-08-19 09:24:43

AJAX引擎经验总结

2010-02-01 15:18:40

C++ new用法
点赞
收藏

51CTO技术栈公众号