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 );
    }
}



从上面例子可以看出,QI其实是很好掌握的,原理非常简单
posted @ 2009-08-18 16:28  爱生活,爱GIS  阅读(889)  评论(2编辑  收藏  举报