要理解AO中的類與介面,啥都不說,看代碼:/*
* Created by SharpDevelop.
* User: noo
* Date: 2009-8-19
* Time: 10:01
*
* AO中類、介面的關係,一個類繼承自多個介面,MapClass類繼承自IActiveView和IMap
*/
using System ;
interface IActiveView//當前視圖介面
{
void Refresh();//重新整理方法
bool ShowScrollBars//是否顯示比例尺屬性,可讀寫
{
get;
set;
}
}
interface IMap//地圖介面
{
void AddLayer();//添加圖層方法
int LayerCount//圖層個數屬性,唯讀
{
get;
}
}
class MapClass:IActiveView,IMap//地圖類繼承自上面兩個介面,實際不止這兩個,還包括像IGraphicsContainer等。
{
void IActiveView.Refresh()//為說明原理,以下的方法或屬性並不是實際的AO中的方法或屬性的實現結果
{
Console.WriteLine ("重新整理當前視圖。");
}
private bool isShow;
bool IActiveView.ShowScrollBars
{
get{return isShow; }
set{isShow=value;}
}
void IMap.AddLayer()
{
Console.WriteLine ("添加圖層。");
}
private int count=5;
int IMap.LayerCount
{
get{return count;}
}
}
class Test
{
static void Main()//入口函數
{
Console.WriteLine ("\n對當前的視圖進行的操作與設定。\n");
IActiveView pActiveView=new MapClass ();
pActiveView.Refresh ();
pActiveView.ShowScrollBars =true;
if(pActiveView.ShowScrollBars )
{
Console.WriteLine ("顯式比例尺。");
}
else
{
Console.WriteLine ("不顯式比例尺。");
}
Console.WriteLine ("\n對地圖進行的操作與設定。\n");
IMap pMap=new MapClass ();
pMap.AddLayer ();
Console.WriteLine ("當前地圖有{0}個圖層",pMap.LayerCount );
//當一個類繼承自多個介面的時候,介面的作用其實就是把類中的方法或屬性進行分類,如上面的IActiveView和IMap介面就實現了不同功能
//當然,如果同屬於一個類(IActiveView)中的其中一個介面(如IMap)想實現另外一個介面(IActiveView)中的方法或屬性,可以應用介面查詢(QI)技術,具體見我的另外一篇博文“C#.NET描述arcobjctes中的介面查詢(QI)技術”。
}
}