我們與COM連接點的回調接口升級COM回調接口
在我們Sample.idl一個問題,我們有一些回調接口ISomeEvents
interface ISomeEvents : IUnknown
{
HRESULT Event1([in]int nData);
HRESULT Event2([in]int nData);
HRESULT Event3([in]int nData);
}
And in the CoClass we have the following statement
coclass MyComp
{
[default] interface IMyInterface;
interface IMyInterFace2;
[default, source] interface ISomeEvents;
};
現在,每當我們增加新的接口,增強的一部分,這不會打破現有的客戶端,但如果增強有 回調的任何修改,然後我們最終更新接口ISomeEvents,這是打破現有的客戶端,我們不得不這樣做,因爲我認爲我們可以 只有一個[defaut,source]接口。
誰能告訴我這是什麼解決方法?
問候 湯姆
我們有一個COM Interop層和COM組件,我們有一個要求,即COM DLL應該向後兼容,現在如果默認的源接口被更改,你能告訴我這將如何向後兼容,因爲舊的互操作層將不知道ISomeEvents2 – user2101801
我認爲這應該沒問題。無論您做什麼,使用舊互操作的舊客戶都無法使用新功能。舊的互操作實際上應該能夠繼續實施和使用'ISomeEvents'就好了。只有更新的客戶端實現'ISomeEvents2'會使用額外的成員。 (但是我沒有在十年內完成COM事件;如果您認爲這是錯誤的,請告訴我。) –
通過將默認源接口設置爲ISomeEvents2,您打破了舊客戶端,COM應該是版本兼容的。如果你有一個接口說IMyInterface和後來你添加一個新的接口IMyInterface2,舊的客戶端應用程序可以繼續使用新的DLL並使用IMyInterface2,這不會打破客戶端,但對於源接口,我認爲這是一個問題,什麼是這個解決方案 – user2101801