可以从COM组件中使用.NET组件吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
是的,这是可能的。
作为thoroughly explained in this CodeProject article,有两种方法可以做到:
早期绑定,包括使用工具(类型库导入程序或tlbimp.exe)创建二进制文件(.NET程序集),其中包含CLR实例化{{3}所需的元数据对于COM对象。这提供了所有强大的类型优势,因为您可以引用生成的程序集并像代码中的任何其他.NET类一样使用这些类。
后期绑定,它使用Type.InvokeMember
方法在运行时通过名称调用COM对象的方法。由于这种方法是弱类型的,它比早期绑定更容易出错,但它也允许更大的灵活性。
答案 2 :(得分:1)
是的,你可以这样做(就像其他答案中提到的那样)。
它基本归结为将您的.NET组件公开为COM组件(这可以通过签署程序集并在中翻转开关[Make assembly COM-Visible]来完成Assembly Information Dialog Box ,但良好做法要求实现接口,并仅使用ComVisibleAttribute公开接口。
这样,您的COM组件就可以与.NET组件通信,就像它也是COM组件一样。