1 回答

TA貢獻1851條經驗 獲得超4個贊
在C#中, if (m_Feedback is INewPolygonFeedback) {},很Easy檢測出兩個接口是否兼容
在Delphi中,則編譯不過去,似乎D的is只支持類的檢測,報"Operator not applicable the operand type",請高人解惑:)
用“as” 試試
as是接口之間的強制轉換,根據異常來判斷類型?不到萬不得已不想用這種方式:)
你的問法,看起來很奇怪。特別是“在C#中, if (m_Feedback is INewPolygonFeedback) {},很Easy檢測出兩個接口是否兼容”
猜測:你只是想知道某個對象是否實現了INewPolygonFeedback而已。不是所謂的“兩個接口是否兼容”。
如果是這樣,直接調用GetInterface(接口ID, IObj)返回是否成功即可。
其實問的就是類似于(btn1 is TButton)的東西,btn1是一個類實例,TButton是一個類。
現在把兩者都換成了接口,if (m_Feedback is INewPolygonFeedback) {}中m_Feedback是一個接口,INewPolygonFeedback也是一個接口,其中實現m_Feedback的類是實現INewPolygonFeedback的類的父類,這種問題應該在COM編程中經常遇到的,象上例 就是使用arcEngine寫一個小程序時的問題,雖然繞了點彎也解決掉了,但心里始終有些別扭。還望各位先生達人不吝解惑。
-----依據所舉例子的進行類比。m_Feedback應該是一個“接口對象”。就我所理解的,“接口”是一個類型,實現它的,稱做“接口對象”,這樣表達上面不會混亂。
I_Instance.QueryInterface(接口ID, IObj)
if (m_Feedback is INewPolygonFeedback) {}中m_Feedback是一個接口,INewPolygonFeedback也是一個接口
具體用法,參考幫助
添加回答
舉報