2016-06-28 52 views
0

我有一个C#类,它实现了在单独的外部TLB文件中定义的接口,该接口通过interop导入到我的项目中。C#coclass - GetTypeInfoCount返回0

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

当我通过My​​CoClass的实例给需要的IDispatch作为参数,并调用的IDispatch :: GetTypeInfoCount C++函数,我总是得到0。为什么呢?

回答

0

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