1 回答

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