標籤:style blog http ar 使用 sp 2014 log cti
一、介面引用
介面是表示一組函數成員而不實現成員的參考型別。其他類型——類和結構可以實現介面。
我們不能直接通過類對象的成員提供者。然而,我們可以通過把類對象引用強制轉換為介面類型來擷取指向介面的引用。一旦有了介面的的引用,我們可以使用點號來調用介面的方法。
如下代碼的聲明了介面以及一個實現它的類。Main中的代碼建立了類的對象,並通過類對象調用實現方法。同時建立了介面類型的變數,強制把類對象的引用轉換成介面類型的引用,並通過介面的引用來調用實現的方法。
這裡為了更清楚看到變數的值和類型,我給添加了監看式視窗,如下
程式運行結果如下:
二、介面查詢(QueryInterface)
一個類可以有多個介面,聲明了介面變數並且指向一個對象的時候,這個變數只能使用該介面內的方法和屬性,而不能訪問其他介面中的方法和屬性。但介面查詢很方便的讓我們在一個類中的不同介面間進行切換。
如下代碼,定義了兩個不同的介面,以及實現了它們的一個類Cat。在Main函數中,通過介面引用調用了IVoice中定義的方法,之後又通過as運算子進行介面的切換,調用了IFavoriteFood中定義的方法。
同樣這裡,我們添加監看式視窗:
程式啟動並執行結果如下:
三、使用介面引用的好處:
編程靈活,類型不會很大的限制:
Imap pMap=new Map();
此時的pMap只能使用IMap介面中定義的方法和屬性,比如擷取圖層的個數,添加圖層等,但是不能清空視圖上的內容(因為這個方法是在IActiveView中定義的)。
但是QI很方便的讓我們在一個類的不同介面間進行切換:
IActiveView pView=pMap as IActiveView。
現在pView就可以使用IActiveView中定義中的方法。
參考資料:《C# 4.0圖解教程》P285-P287
ArcEngine_10開發手冊(2011版) P20-25
C#介面