C# coclass - GetTypeInfoCount returns 0

C# coclass - GetTypeInfoCount returns 0

我有一个 C# class,它实现了一个在单独的外部 TLB 文件中定义的接口,通过互操作导入到我的项目中。

[ComVisible(true)]
[ComDefaultInterface(typeof(IInterfaceFromSeparateTLB ))]
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("4FFBBD0D-6F4B-47D4-B4F9-586F8C108BAD")]
[IDispatchImpl(IDispatchImplType.CompatibleImpl)]
public class MyCoClass : IInterfaceFromSeparateTLB {}

当我将 MyCoClass 的实例传递给以 IDispatch 作为参数并调用 IDispatch::GetTypeInfoCount 的 C++ 函数时,我总是得到 0。为什么?

调用 IDispatch::GetTypeInfoCount 我忘记检查 HRESULT,它是 0x8002802b (TYPE_E_ELEMENTNOTFOUND)。我在我的 DLL 旁边放了一个 .TLB 文件的副本,然后将 "Embed Interop Types" 选项设置为 false,问题就解决了。