我编写了一些 C# 代码,它使用 .NET 将 .NET 对象作为IDispatch
指针返回给非托管代码Marshal.GetIDispatchForObject
,但是,该对象还实现了其他(非 .NET 定义的)COM 接口。但是,在这些接口的非托管世界QueryInterface
中,调用它们的方法永远不会中断我的 .NET 代码,并且似乎只返回默认值 (0)。
是否可以将 .NET 对象编组为双接口,以便可以通过IDispatch
或通过查询特定接口来使用它?我的类型是公开的,ComVisible
我尝试申请[ClassInterface(ClassInterfaceType.AutoDual)]
但没有运气。
UnmanagedType.Interface
使用编组让事情正常工作我没有任何问题,但是,支持IDispatch
也似乎有问题。如果有一种简单的方法可以“手动”实现IDispatch
,这也是一个可以接受的解决方案。