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

你可能感兴趣的:(object)