我正在尝试将C#接口用于移动宽带API。下面的代码编译并且intellisense显示所有COM方法,但代码无法正确执行。
MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
IMbnConnectionProfile conProfile = (IMbnConnectionProfile)mbnInfMgr;
string xmlBuff = conProfile.GetProfileXmlData();
产生以下错误:
Unable to cast COM object of type 'System.__ComObject' to interfacetype 'MbnApi.IMbnConnectionProfile'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{DCBBBAB6-2010-4BBB-AAEE-338E368AF6FA}' failed due to the following error: No such interface supported(Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
Microsoft列出了以下呼叫:
IMbnConnectionProfile Interface Method C# Signature
Delete public void Delete();
GetProfileXmlData public string GetProfileXmlData();
UpdateProfile public void UpdateProfile( string strProfile);
看起来我需要指定界面,但似乎无法找到如何执行此操作。
任何人都可以告诉我该怎么做吗?
答案 0 :(得分:0)
通过调用IMbnInterfaceManager::GetInterface或IMbnInterfaceManager::GetInterfaces 方法。
E.g。
MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
IMbnInterfaceManager infManager = (IMbnInterfaceManager)mbnInfMgr;
//obtain the IMbnInterface passing interfaceID
string interfaceID = “{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}”;
IMbnInterface mbnInterface= infMgr.GetInterface(interfaceID);
MbnConnectionProfileManager mbnProfMgr = new MbnConnectionProfileManager();
IMbnConnectionProfileManager profileManager =
(IMbnConnectionProfileManager)mbnProfMgr;
IMbnConnectionProfile[] profArr =
(IMbnConnectionProfile[])profileManager.GetConnectionProfiles(mbnInterface);