基于C#的ArcEngine二次开发教程(03):ArcEngine的接口查询技术底层分析
目录
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的接口查询技术底层分析相关推荐
- 基于C#的ArcEngine二次开发教程(17):获取栅格属性的接口及代码实现
目录 1 问题描述 2 问题解析 3 要点分析 3.1 ArcGIS的接口与方法 3.3 DataGridView的学习总结 3.3.1 属性设置 3.3.2 添加新行 3.3.3 绘制行号 3.3. ...
- 基于C#的ArcEngine二次开发教程(11):矢量数据属性查询接口介绍及实现源码
目录 1 使用ArcMap进行矢量数据属性查询 示例1:根据Name字段进行查询 示例2:根据KIND字段进行多条记录查询 2 基于AE的矢量数据属性查询的实现 2.1 IFeatureLayer 2 ...
- 基于C#的ArcEngine二次开发教程(12):缓冲区分析
目录 1 利用ArcMap实现缓冲区分析 1.1 打开缓冲区向导工具 1.2 缓冲区分析 2 缓冲区分析常用接口 2.1 ITopologicalOperator接口 2.2 IGraphicsCon ...
- UG二次开发教程(基于NX12.0/VS2015版本)
** UG二次开发教程(基于NX12.0/VS2015版本) 安装教程 ** UG NX12.0安装 NX12.0 安装包下载地址: 链接:https://pan.baidu.com/s/1I0CCF ...
- 基于Python的ArcGIS二次开发实验实习教程
基于Python的ArcGIS二次开发实验实习教程. ISBN编号: 9787307221772 原价(定价): 39元, 武汉大学出版社 天猫正版链接: https://detail.tmall.c ...
- C#ArcEngine二次开发——创建与调用AOI书签
基于ArcEngine10.2和VS2012进行C#ArcEngine二次开发 创建与调用AOI书签 在如图所示的程序主窗体菜单栏中添加一个菜单项"创建书签",其控件名为" ...
- Arcgis ArcEngine二次开发: 输出宗地图、宗地草图、权属协议书附图、房产分层分户图、公示图、三调土地利用图、行政区划图、标准分幅图等各种图件
1.Arcgis ArcEngine二次开发: 输出宗地图.宗地草图.权属协议书附图.房产分层分户图.公示图.三调土地利用图.行政区划图.标准分幅图等各种图件 有需要联系QQ:185242573. ...
- pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...
二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...
- 来自damon的zencart二次开发教程-2.2登录模块分析
我们在制作zencart的模板时,经常会遇到需要将zencart的登陆页面与注册账户页面分离的情况(在 默认情况下,点击"Login"按钮会进入登陆页面与注册账号页面,登录zenc ...
最新文章
- LINUX:GRUB破解root密码【远程不可
- 2018年全国多校算法寒假训练营练习比赛(第三场)
- TensorFlow 对数据集标记的xml文件解析记录
- STM32F103 CAN中断发送功能的再次讨论
- 37.拷贝控制和资源管理
- [转]Using Angular in Visual Studio Code
- 全国高等学校计算机等级考试(江西考区)一级笔试试卷a,全国高等学校计算机等级考试(江西考区)一级笔试试卷A...
- RabbitMQ 整合 Spring Cloud Stream
- 记录一下免费域名和空间
- 用php循环星期一到星期日,php – 获取最后一个星期一 – 星期日的日期:有更好的方法吗?...
- CentOS防止黑客攻击Linux服务器实战演练
- 英语六级翻译训练:教育专题
- mnist数据集下载——mnist数据集提供百度网盘下载地址
- 电脑怎么打印pdf文件,电脑中保存的pdf文件怎么打印
- 帝国php本地安装教程,帝国CMS整站源码通用安装教程
- Gamma.app:由AI驱动,一种呈现想法的新媒介
- Java枚举深入理解以及HttpStatus类的使用
- catkin_make编译时fatal error: ###_msgs/***.h: 没有那个文件或目录
- ROS雷达包出现:ERROR: cannot launch node of type: rplidar_ros
- 华为面试100题:java开发工程师(中)