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 );
}
}
* 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其实是很好掌握的,原理非常简单