1 / 28
文档名称:

SharpDevelop源码分析..docx

格式:docx   大小:317KB   页数:28页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

SharpDevelop源码分析..docx

上传人:q1188830 2019/7/9 文件大小:317 KB

下载得到文件列表

SharpDevelop源码分析..docx

文档介绍

文档介绍:目录序 2一、基本概念 2二、主程序 5三、插件系统 7SharpDevelop的AddInTreeView插件 20转载:http://blog./passos/article/details/124722序   ,遇到了一个比较不错的开源的IDESharpDevelop。这个开发工具是使用C#开发的,比较吸引我的一点就是它是采用了和Eclipse类似的插件技术来实现整个系统的。而这个插件系统是我最感兴趣的地方,因此开始了一段代码的研究。在本篇之后,我会陆续把我研究的心得写下来。由于是在网吧上网,有诸多不便,因此可能会拖比较长的时间。一、基本概念   首先,我们先来对SharpDevelop有一个比较感性的认识。你可以从这里下载到它的可执行程序和代码包    / ,安装的废话就不说了,先运行一下看看。感觉跟VS很像吧?,还有很多地方需要完善。关于代码和系统结构,SharpDevelop的三个作者写了一本书,各位看官可以参考一下,不过我看过之后还是有很多地方不太理解。   然后,让我来解释一下什么叫插件以及为什么要使用插件系统。我们以往的系统,开发人员编译发布之后,系统就不允许进行更改和扩充了,如果要进行某个功能的扩充,则必须要修改代码重新编译发布。这就给我们带来了比较大的不方便。解决的方法有很多,例如提供配置等等方法。在解决方案之中,插件是一个比较好的解决方法。大家一定知道PhotoShop、WinAmp吧,他们都有“插件”的概念,允许其他开发人员根据系统预定的接口编写扩展功能(例如PhotoShop中各种各样的滤镜)。所谓的插件就是系统的扩展功能模块,这个模块是以一个独立文件的形式出现的,与系统是相对独立。在系统设计期间并不知道插件的具体功能,仅仅是在系统中为插件留下预定的接口,系统启动的时候根据插件的配置寻找插件,根据预定的接口把插件挂接到系统中。   这样的方式带来什么样的优点呢?首先是系统的扩展性大大的增强了,如果我们在系统发布后需要对系统进行扩充,不必重新编译,只需要修改插件就可以了。其次有利与团队开发,各个功能模块由于是以插件的形式表现在系统中,系统的每日构造就很简单了,不会因为某个模块的错误而导致整个系统的BUILD失败。失败的仅仅是一个插件而已。   PhotoShop和Winamp的插件系统是比较简单的,他们首先实现了一个基本的系统,然后在这个系统的基础上挂接其他扩展的功能插件。而SharpDevelop的插件系统更加强大,它的整个系统的基础就仅仅是一个插件管理系统,而你看到的所有的界面、功能统统都是以插件的形式挂入的。在这样的一个插件系统下,我们可以不修改基本系统,仅仅使用插件就构造出各种各样不同的系统。   现在让我们来看看它的插件系统。进入到SharpDevelop的安装目录中,。在Addins目录下有两个后缀是addin的文件,(配置)文件,里面定义的各个功能模块存在于Bin/,另外还有很多其他的插件定义在Addins目录下的addin文件中。   分析SharpDevelop的代码,首先要弄清楚几个基本的概念,这些概念和我以前的预想有一些区别,我深入了代码之后才发现我的困惑所在。1、AddInTree  插件树   SharpDevelop中的插件被组织成一棵插件树结构,树的结构是通过Extension(扩展点)中定义的Path(路径)来定义的,类似一个文件系统的目录结构。系统中的每一个插件都在配置文件中指定了Extension,通过Extension中指定的Path挂到这棵插件树上。在系统中可以通过AddTreeSingleton对象来访问各个插件,以实现插件之间的互动。2、 AddIn插件   在SharpDevelop的概念中,插件是包含多个功能模块的集合(而不是我过去认为的一个功能模块)。在文件的表现形式上是一个addin配置文件,在系统中对应AddIn类。3、Extension扩展点   SharpDevelop中的每一个插件都会被挂到AddInTree(插件树)中,而具体挂接到这个插件树的哪个位置,则是由插件的Extension对象中的Path 指定的。在addin配置文件中,对应于<Extension>。例如下面这个功能模块的配置<Extension path = "/SharpDevelop/Workbench/Ambiences">         <Class id    = ".NET" class =

最近更新

绝缘子泄漏电流分形压缩方法的研究与DSP系统实.. 2页

结构仿生型丝胶蛋白微胶囊的制备及其应用研究.. 2页

经验与知觉信念——基于对信念本性考察的信念.. 2页

违禁药物筛查商业计划书 33页

2024年放风筝日记4篇[精品] 5页

2024年放射科实习医生自我鉴定范文 9页

细胞内胆固醇转运关键蛋白质的筛选、鉴定及其.. 2页

香道小组活动计划书 35页

组织工程编织型神经导管用PGA纤维表面制微孔探.. 2页

组团城市中单组团公交线网优化研究——以北碚.. 2页

线性调谐微机械陀螺驱动和检测技术的研究中期.. 2页

跨境直播基地项目计划书 39页

开花茶网店计划书 41页

纳米薄膜法向导热系数分子动力学研究的开题报.. 2页

纳米结构M-TCNQ的应用研究的开题报告 2页

纳米碳管对小球藻的毒性效应与致毒机理的开题.. 2页

纳米材料在抗肿瘤免疫治疗中的应用研究的开题.. 2页

纳米ZnO对典型亚硝酸菌的毒性效应与机制研究的.. 2页

花店实施计划书 32页

红色逐梦计划书 33页

国旗部计划书 27页

2024年摄影的演讲稿范文 6页

动脉血气分析和酸碱平衡课件 42页

紫色土坡地产流过程及胶体迁移研究的开题报告.. 2页

紫外辐射加速有机物的生物降解的开题报告 2页

索绪尔符号理论在英语词汇教与学中的应用的开.. 2页

酸奶制作及营养成分分析课件 21页

乡镇卫生院常见病门诊和住院诊疗规范 66页

七年级下血液测试 1页

苏教版数学四年级下册平移旋转和轴对称练习题.. 2页