C#.NET描述arcobjects中的接口查询(QI)技术

        在AO或者是AE的二次开发中,接口查询(QI)技术被认为是最基本,同时也是最重要的技术之一,几乎每一个GIS系统,甚至是一个小小的GIS功能模块,都不可能不用到接口查询技术。通俗地说,QI就是类中的显式强制转换,请看下面例子。
/*
 * Created by SharpDevelop.
 * User: noo
 * Date: 2009-8-18
 * Time: 15:46
 * 
 * 接口查询(QI)
 
*/

using  System ;
interface  IApple // 苹果接口
{
    
string  spice // 香属性
    {
        
get ;
        
set ;
    }
    
void  circle(); // 圆方法
}
interface  IBanana // 香蕉接口
{
    
string  sweet // 甜属性
    {
        
get ;
        
set ;
    }
    
void  column(); // 柱方法
}
class  Fruit:IApple,IBanana // 水果类
{
    
private   string  str1;
    
string  IApple.spice // 注意这里的写法
    {
        
get { return  str1;}
        
set {str1 = value;}
    }
    
void  IApple.circle() // 同上
    {
        Console.WriteLine (
" 苹果接口的成员函数 " );
    }
    
    
private   string  str2;
    
string  IBanana.sweet
    {
        
get { return  str2;}
        
set {str2 = value;}
    }
    
void  IBanana.column()
    {
        Console.WriteLine (
" 香蕉接口的成员函数 " );
    }
}
class  Test
{
    
static   void  Main()
    {
        IApple pApple
= new  Fruit (); // 实例化接口类型的类
        pApple.circle ();
        pApple.spice 
= " 香苹果 " ;
        Console.WriteLine (pApple.spice );
        
        IBanana pBanana
= new  Fruit ();
        pBanana.column ();
        pBanana.sweet 
= " 甜香蕉 " ;
        Console.WriteLine (pBanana.sweet );
        
        IApple pApp
= new  Fruit ();
        IBanana pBan
= pApp  as  IBanana ; // 接口查询(QI),这里其实就是一个显式的强制转换
        pBan.column ();
        pBan.sweet 
= " 甜香蕉 " ;
        Console.WriteLine (pBan.sweet );
    }
}

C#.NET描述arcobjects中的接口查询(QI)技术

从上面例子可以看出,QI其实是很好掌握的,原理非常简单

你可能感兴趣的:(object)