当前位置: 首页 > news >正文

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

转载于:https://www.cnblogs.com/gisland/archive/2009/08/18/1549077.html

相关文章:

  • 软件工程 之 学习C#前的总结~
  • [转]宝宝1岁内,各阶段动作发展
  • Page.RegisterStartupScript的使用方法
  • QQ2009性能优化测试版 会员补丁
  • CListCtrl使用技巧(1)
  • C Java PHP Perl Python的程序代码美化工具使用
  • FTP服务器搭建--虚拟多用户(vsftpd)
  • Http Handler 介绍
  • 首次以管理员用户身份登录我的公司门户
  • Linq实现GridView高效分页(Skip() and take())
  • 我从11楼跳下去。。。
  • ASP.NET获取客户端IP/用户名等信息
  • mysql noinstall 安装
  • asp.NET 脏字过滤算法 修改版
  • 起个名儿,叫如何自主学习(网络版)~~
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Cookie 在前端中的实践
  • download使用浅析
  • ECMAScript6(0):ES6简明参考手册
  • in typeof instanceof ===这些运算符有什么作用
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript函数式编程(一)
  • js如何打印object对象
  • js中的正则表达式入门
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • uni-app项目数字滚动
  • 电商搜索引擎的架构设计和性能优化
  • 关于Flux,Vuex,Redux的思考
  • 官方解决所有 npm 全局安装权限问题
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 如何在GitHub上创建个人博客
  • 微信小程序填坑清单
  • 小程序开发之路(一)
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 再次简单明了总结flex布局,一看就懂...
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)logging(日志模块)
  • (蓝桥杯每日一题)love
  • (三)模仿学习-Action数据的模仿
  • (转载)虚函数剖析
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Core 中插件式开发实现
  • .NET Core引入性能分析引导优化
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Reactor简单使用教程
  • .net refrector
  • .NET Standard 的管理策略
  • .NET 事件模型教程(二)
  • .net6使用Sejil可视化日志