2016-06-28 50 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,並且問題消失了。