AE接口跳轉

深刻理解ESRI ArcGISEngine編程接口跳轉的含義

   

1、何爲接口跳轉(QI-Querry Interface)

QI是ArcGIS Eingine 開發中的一個重要技術細節,按Querry Interface直譯,即爲查詢接口,但其實質是指從類的一個接口轉到另外一個接口。因此,也稱爲接口跳轉。

在學習面向對象編程時,已經知道類可能包含很多屬性和方法,需要對這些屬性和方法進行歸隊,每隊可定義一個接口。這樣每個類就可能包含多個接口,例如Polygon類就包含了Ipolygon、Igeometry和Iarea等許多接口。當開發人員想知道某個多邊形的周長時,就必須使用Ipolygon接口下的Length屬性。若要想知道面積,則需使用Iarea接口下的Area屬性。即在對象(Object)的使用過程中,經常需要在不用接口之間跳來跳去,這就是所謂的接口跳轉(QI)。

2、如何QI

下面通過一個具體實例進行說明:

IPolygon pPolygon;

pPolygon = new PolygonClass();

double curveLength;

curveLength = pPolygon.Length;

IArea pArea;

pArea = pPolygon as IArea;//這裏發生了QI

double shapeArea;

shapeArea = pArea.Area;

3、QI的實質

IPolygon和Iarea明明是兩個接口,爲何在QI時寫:

pArea=pPolygon as IArea;

上述語句之所以合法,需要理解接口變量,通過語句:

IPolygon pPolygon;

就申明瞭一個名爲pPolygon的接口變量,接口變量實質就是用於存放某個內存地址的變量,但又和一般的地址變量不同,因爲在使用接口變量時必須符合該接口的規範。

通過語句:

pPolygon=new PolygonClass();

接口變量pPolygon就存放了PolygonClass()對象在內存中的首地址,可以理解爲pPolygon指向了某Polygon對象。並且在使用pPolygon變量時,必須符合IPolygon接口的規範,比如只有Length屬性,而沒有Area屬性,且Length屬性爲只讀(所謂接口,其實就是一種規範而已)。

語句:

pArea = pPolygon as IArea;

就是把某Polygon的首地址賦給pArea,但pArea變量的使用由必須符合IArea接口的規範。

因此所謂QI就是把某對象的內存首地址賦給不同的接口變量,以便根據不同的接口規範去訪問不同的屬性和方法。

 

轉載自https://www.cnblogs.com/aipingniu/p/6014814.html,侵刪。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章