ArcObjects SDK开发 005 ArcObjects SDK中的插件式架构
1、什么是插件式架构
插件式架构设计中主要包括三个重要部分,宿主、插件协议以及插件实现。宿主是指使用插件的部分,该模块可以是一个类,也可以是多个接口和类组成的模块。插件协议是指宿主与插件之间的协议,宿主根据这个协议去调用插件的功能,插件根据这个协议去实现宿主需要的功能。插件实现就是基于插件协议实现的一个个具体插件。插件协议一般用接口体现。

2、Arcobjects中的Command-Tool插件架构
要梳理AO中的Command-Tool插件架构,就要找到对应的宿主、插件协议以及具体的插件实现。
我们先通过ICommand的定义,找下宿主是什么。

当命令被创建的时候,会传一个名为hook的参数进来,该参数为object类型,名称翻译过来叫钩子。这个名称挺形象的,相当于这个小小的插件钩住了一个很庞大宿主对象,这样在这个插件中,就可以使用宿主对象的任何资源了。
其关系如下图所示。

我们开发的时候,常用的宿主就是IMapControl、IPageLayoutControl,分别可以有AxMapControl.Object和AxPageLayoutControl.Object获取。AO API已经为我们实现了上百个命令或者工具。例如我们最常用的地图放大工具、地图全图命令等。这些工具和命令我们都可以直接使用。
下面代码展示了如何设置当前的地图工具为放大工具。
ESRI.ArcGIS.SystemUI.ITool myZoomInTool=new ControlsMapZoomInToolClass();
(myZoomInTool as ICommand).OnCreate(myAxMapControl.Object);
(myAxMapControl.Object as IMapControl2). CurrentTool = myZoomInTool;
调用AO API自带的全图工具的代码如下。
ESRI.ArcGIS.SystemUI.ICommand myFullCommand=new ControlsMapFullExtentCommandClass ();
myFullCommand.OnCreate(myAxMapControl.Object);
myFullCommand. OnClick();
ArcObjects SDK开发 005 ArcObjects SDK中的插件式架构的更多相关文章
- [Android Pro] 开发一流Android SDK
cp from : https://blog.csdn.net/dd864140130/article/details/53558011 本篇文章已授权微信公众号 guolin_blog (郭霖)独家 ...
- ESP8266开发综合篇(SDK开发-视频教程总揽)
为了解决基础教程简单入门但不实用,项目方案非常实用但比较难的问题,开始推出8266开发综合篇 综合篇涉及到AT,LUA,SDK,LUA(sdk)开发,LUA和SDK开发会同步进行,后期再整理AT指令的 ...
- 零基础ASP.NET Core MVC插件式开发
零基础ASP.NET Core MVC插件式开发 一个项目随着业务模块的不断增加,系统会越来越庞大.如果参与开发的人员越多,管理起来也难度也很大.面对这样的情况,首先想到的是模块化插件式开发,根据业务 ...
- 插件化技术在安卓sdk开发中实际应用
笔者从 2016 年初就因为公司业务需求转战 android sdk 开发, 应用插件化技术将公司 android sdk 重新翻版.先来说说需求. 由于笔者所在一家创业公司, android sdk ...
- 继《关于讯飞语音SDK开发学习》之打包过程中遇到小问题
关于讯飞语音SDK开发学习 使用vs自带打包,具体怎么操作就不说了,网上关于这方面的资料挺多的.例如:winform 打包部署,VS2010程序打包操作(超详细的),关键是桌面上创建快捷方式中的&qu ...
- 基于Unity3D 的Vuforia SDK开发基础教程
最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents ------------------------------------------ ...
- Kinect for Windows SDK开发学习相关资源
Kinect for Windows SDK(K4W)将Kinect的体感操作带到了平常的应用学习中,提供了一种不同于传统的鼠标,键盘及触摸的无接触的交互方式,在某种程度上实现了自然交互界面的理想,即 ...
- 微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享. ...
- TortoiseSVN安装以及淘宝 TAE SDK 开发环境的搭建
一.TortoiseSVN 的下载和安装 1.进入TortoiseSVN 官网下载地址http://tortoisesvn.net/downloads.html,根据自己的操作系统位数下载相应最新版本 ...
- SDK开发断点失效
做SDK开发,一般会创建一个静态库工程,然后添加一个app的Target 可是,Xcode7创建的工程,app的Target中断点有效,能断住,为什么静态库的Target中的断点断不住呀. 断点断住发 ...
随机推荐
- 【java8新特性】01:函数式编程及Lambda入门
我们首先需要先了解什么是函数式编程.函数式编程是一种结构化编程范式.类似于数学函数.它关注的重点在于数据操作.或者说它所提倡的思想是做什么,而不是如何去做. 自Jdk8中开始.它也支持函数式编程.函数 ...
- dotnet7 aot编译实战
0 起因 这段日子看到dotnet7-rc1发布,我对NativeAot功能比较感兴趣,如果aot成功,这意味了我们的dotnet程序在防破解的上直接指数级提高.我随手使用asp.netcore-7. ...
- Elasticsearch索引和查询性能调优的21条建议
Elasticsearch部署建议 1. 选择合理的硬件配置:尽可能使用 SSD Elasticsearch 最大的瓶颈往往是磁盘读写性能,尤其是随机读取性能.使用SSD(PCI-E接口SSD卡/SA ...
- 在k8s集群中安装traefik,并结合kuboard界面使用
安装traefik 参考步骤:https://blog.51cto.com/u_13760351/2764008?xiangguantuijian&01 修改好的四个yaml文件下载地址:ht ...
- 自定义mapping与常见参数
PUT test { "mappings": { "dynamic": true, "properties": { "firstn ...
- PAT (Basic Level) Practice 1027 打印沙漏 分数 20
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指 ...
- 一篇文章带你掌握主流服务层框架——SpringMVC
一篇文章带你掌握主流服务层框架--SpringMVC 在之前的文章中我们已经学习了Spring的基本内容,SpringMVC隶属于Spring的一部分内容 但由于SpringMVC完全针对于服务层使用 ...
- SpringMVC访问静态资源的问题。
在项目中引用css和js文件一直出错,反复修改文件路径始终访问不到.究其原因原来是应该在web.xml 文件中添加访问静态资源的默认servlet. 如下. <servlet-mapping&g ...
- JVM运行模式和逃逸分析
JVM三种运行模式: 解释模式(Interpreted Mode):只使用解释器(-Xint强制JVM使用解释模式),执行一行JVM字节码就编译一行为机器码.(可以马上看到效果,但是运行过程比较慢) ...
- token字段,请务加在请求地址的头部header
如下图所示,你必须在请求的头部加上 token参数,主要原因有两个.第一点,这个是登录标志,因为接口访问用不了cookie,所以只能通过这个header请求标志判断用户是否已经登录.第二点,系统有时候 ...