可以从COM组件中使用.NET组件吗?

时间:2009-07-01 06:48:39

标签: .net com interop

可以从COM组件中使用.NET组件吗?

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

是的,这是可能的。

作为thoroughly explained in this CodeProject article,有两种方法可以做到:

  1. 早期绑定,包括使用工具(类型库导入程序或tlbimp.exe)创建二进制文件(.NET程序集),其中包含CLR实例化{{3}所需的元数据对于COM对象。这提供了所有强大的类型优势,因为您可以引用生成的程序集并像代码中的任何其他.NET类一样使用这些类。

  2. 后期绑定,它使用Type.InvokeMember方法在运行时通过名称调用COM对象的方法。由于这种方法是弱类型的,它比早期绑定更容易出错,但它也允许更大的灵活性。

答案 2 :(得分:1)

是的,你可以这样做(就像其他答案中提到的那样)。

它基本归结为将您的.NET组件公开为COM组件(这可以通过签署程序集并在中翻转开关[Make assembly COM-Visible]来完成Assembly Information Dialog Box ,但良好做法要求实现接口,并仅使用ComVisibleAttribute公开接口。

这样,您的COM组件就可以与.NET组件通信,就像它也是COM组件一样。