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)技术”。
    }
}

posted @ 2009-08-19 11:48  爱生活,爱GIS  阅读(830)  评论(2编辑  收藏  举报