目录

1 准备工作

2 类和接口的实现

2.1 定义接口IArea

2.2 定义接口ILength

2.3 定义类calc并显式实现IArea和ILength接口

3 主窗体的展示

3.1 直接通过接口定义对象

3.3 采用接口查询的方式定义

4 运行结果展示


接口查询就是实现对象在同一类的不同接口之间切换;即:在一个类实现了多个接口,从类中的一个接口跳转到另外一个接口的过程就是QI(接口查询)。

理论要点:

接口查询(或者叫接口转换)是针对同一个类实现的接口来说的,不同的类实现的接口之间是不能进行QI的

当我们用new关键字实例化了一个类,并将该类实例的引用保存到一个接口类型的变量里面(注:该类实现了该接口)

1 准备工作

新建winform应用程序,添加button1,button2和button3按钮

定义类calc(计算类)、IArea(面积接口)和ILength(长度接口)

2 类和接口的实现

2.1 定义接口IArea

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace QI
{interface IArea{void getArea();}
}

2.2 定义接口ILength

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace QI
{interface ILength{void getLength();}
}

2.3 定义类calc并显式实现IArea和ILength接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace QI
{class calc : IArea, ILength{void IArea.get(){MessageBox.Show("计算面积接口");}void ILength.get(){MessageBox.Show("计算长度接口");}}
}

3 主窗体的展示

3.1 直接通过接口定义对象

     private void button1_Click(object sender, EventArgs e){IArea A = new calc();A.get();ILength B = new calc();B.get();}

3.2 通过实例化类的方式访问接口方法


无法直接访问

3.3 采用接口查询的方式定义

 private void button3_Click(object sender, EventArgs e){IArea IA = new calc();IA.get();ILength IL = IA as ILength;IL.get();}

类clac实现了四个接口,但是,对象IA目前所能使用的方法和属性就只有接口IArea中所定义的属性和方法,而不能使用ILength接口所定义的属性和方法。但是,如果我们还想使用其它接口(ILength)所定义的方法和属性,那么这个时候就要用到QI

4 运行结果展示

基于C#的ArcEngine二次开发教程(03):ArcEngine的接口查询技术底层分析相关推荐

  1. 基于C#的ArcEngine二次开发教程(17):获取栅格属性的接口及代码实现

    目录 1 问题描述 2 问题解析 3 要点分析 3.1 ArcGIS的接口与方法 3.3 DataGridView的学习总结 3.3.1 属性设置 3.3.2 添加新行 3.3.3 绘制行号 3.3. ...

  2. 基于C#的ArcEngine二次开发教程(11):矢量数据属性查询接口介绍及实现源码

    目录 1 使用ArcMap进行矢量数据属性查询 示例1:根据Name字段进行查询 示例2:根据KIND字段进行多条记录查询 2 基于AE的矢量数据属性查询的实现 2.1 IFeatureLayer 2 ...

  3. 基于C#的ArcEngine二次开发教程(12):缓冲区分析

    目录 1 利用ArcMap实现缓冲区分析 1.1 打开缓冲区向导工具 1.2 缓冲区分析 2 缓冲区分析常用接口 2.1 ITopologicalOperator接口 2.2 IGraphicsCon ...

  4. UG二次开发教程(基于NX12.0/VS2015版本)

    ** UG二次开发教程(基于NX12.0/VS2015版本) 安装教程 ** UG NX12.0安装 NX12.0 安装包下载地址: 链接:https://pan.baidu.com/s/1I0CCF ...

  5. 基于Python的ArcGIS二次开发实验实习教程

    基于Python的ArcGIS二次开发实验实习教程. ISBN编号: 9787307221772 原价(定价): 39元, 武汉大学出版社 天猫正版链接: https://detail.tmall.c ...

  6. C#ArcEngine二次开发——创建与调用AOI书签

    基于ArcEngine10.2和VS2012进行C#ArcEngine二次开发 创建与调用AOI书签 在如图所示的程序主窗体菜单栏中添加一个菜单项"创建书签",其控件名为" ...

  7. Arcgis ArcEngine二次开发: 输出宗地图、宗地草图、权属协议书附图、房产分层分户图、公示图、三调土地利用图、行政区划图、标准分幅图等各种图件

    1.Arcgis  ArcEngine二次开发: 输出宗地图.宗地草图.权属协议书附图.房产分层分户图.公示图.三调土地利用图.行政区划图.标准分幅图等各种图件 有需要联系QQ:185242573. ...

  8. pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...

    二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...

  9. 来自damon的zencart二次开发教程-2.2登录模块分析

    我们在制作zencart的模板时,经常会遇到需要将zencart的登陆页面与注册账户页面分离的情况(在 默认情况下,点击"Login"按钮会进入登陆页面与注册账号页面,登录zenc ...

最新文章

  1. LINUX:GRUB破解root密码【远程不可
  2. 2018年全国多校算法寒假训练营练习比赛(第三场)
  3. TensorFlow 对数据集标记的xml文件解析记录
  4. STM32F103 CAN中断发送功能的再次讨论
  5. 37.拷贝控制和资源管理
  6. [转]Using Angular in Visual Studio Code
  7. 全国高等学校计算机等级考试(江西考区)一级笔试试卷a,全国高等学校计算机等级考试(江西考区)一级笔试试卷A...
  8. RabbitMQ 整合 Spring Cloud Stream
  9. 记录一下免费域名和空间
  10. 用php循环星期一到星期日,php – 获取最后一个星期一 – 星期日的日期:有更好的方法吗?...
  11. CentOS防止黑客攻击Linux服务器实战演练
  12. 英语六级翻译训练:教育专题
  13. mnist数据集下载——mnist数据集提供百度网盘下载地址
  14. 电脑怎么打印pdf文件,电脑中保存的pdf文件怎么打印
  15. 帝国php本地安装教程,帝国CMS整站源码通用安装教程
  16. Gamma.app:由AI驱动,一种呈现想法的新媒介
  17. Java枚举深入理解以及HttpStatus类的使用
  18. catkin_make编译时fatal error: ###_msgs/***.h: 没有那个文件或目录
  19. ROS雷达包出现:ERROR: cannot launch node of type: rplidar_ros
  20. 华为面试100题:java开发工程师(中)

热门文章

  1. ssm整合开发配置文件
  2. 机器学习之置信区间上界算法
  3. 【C进阶】之动态内存分配及内存操作函数
  4. html页面上传文件mui,mui 文件上传注意问题
  5. oracle重做日志教程,Oracle重做日志管理
  6. 58同城,租房信息爬取
  7. 海鸣威《离开为了更好的回来》 MV首播感心动耳
  8. 养殖环控程序 三菱plc可以带物联网模块,7寸触摸屏程序
  9. 双碑零基础意大利语学习 小白也能看懂的意大利语入门知识
  10. html中div的定位,html中div定位练习