C#.NET描述arcobjects中的接口、类的关系
要理解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)技术”。
}
}
* 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)技术”。
}
}