我正在使用C#編寫的Windows運行時組件,用於包裝一些沒有Windows運行時等效項的COM接口,其中this MSDN example使用interop接口由mbnapi.tlb提供。當我嘗試實例我IMbnInterfaceManager成員在包裝類的構造函數,像這樣:無法在Windows運行時組件中實例化COM互操作接口
m_InterfaceManager = (IMbnInterfaceManager)new MbnInterfaceManager();
它拋出由於E_NOINTERFACE一個System.InvalidCastException(支持沒有這樣的接口)。但是,如果我將我的包裝器構建爲類庫而不是WinMD組件,它可以很好地工作,不會有其他更改。
我寧願將它作爲Windows運行時組件來構建,以免限制庫的用處。 (至少有一個這樣的項目是用Javascript/HTML編寫的。)我做錯了什麼,或者是我試圖做不到的事情?
編輯:原來它是.NET 4.5 RC中的一個錯誤。如果有其他人遇到此問題,請在此留下此問題,如果找到問題,我會發布解決方法。據推測,它將由RTM修復。
線程是神祕的E_NOINTERFACE錯誤的常見原因。 –
這是我試圖自行研究這個問題的印象 - 但執行路徑_seems_與它構建爲Windows Runtime組件還是類庫相同。在這兩種情況下,它都是嘗試實例化類的主要UI線程。 – spwert