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