胖胖的blog

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

功能和对应代码的定位

系统运行起来以后,我们就可以使用SharpdevelopIDE来进行软件开发了,不过我们的目的是研究它的代码,所以我们的着眼点还是在它的每一个功能是如何实现的。比如它的新建文件功能是如何实现的,它的自动缩进是如何实现的?也许会有很多心急的同学直接打开项目代码树,满世界的去找某个功能对应的代码;也许有别的同学会一步步调试来找这些代码;不过通过这两种方法来找代码都被证明是几乎不可能完成的任务,因为Sharpdevelop代码量很大,而且大量使用了反射的方式来运行程序,所以这些方式是行不通的。

不过,Sharpdevelop提供了另外一个途径来进行菜单功能和实现代码的对应,就是代码文件根目录下的AddIns文件夹下的ICSharpCode.SharpDevelop.addin文件,该文件就定义了所有相关插件的信息。在这个文件中,有很多节点,最常见的节点如下:

<Path name = "/SharpDevelop/Workbench/MainMenu">

                   <MenuItem id = "File" label    = "${res:XML.MainMenu.FileMenu}" type="Menu">

                            <MenuItem id = "New" label = "${res:XML.MainMenu.FileMenu.New}" type="Menu">

                                     <MenuItem id           = "File"

                                               label   = "${res:XML.MainMenu.FileMenu.New.File}"

                                              icon   = "Icons.16x16.NewDocumentIcon"

                                              shortcut = "Control|N"

                                              class   = "ICSharpCode.SharpDevelop.Commands.CreateNewFile"/>

                            </MenuItem>

</MenuItem>

</Path>

这里,path表示这个节点的标志,一般用字面意思我们就能理解是干什么的。比如这个就是主菜单的意思。

下面的那些节点表示菜单项,文字一般都是从资源文件取得,对于我们来说最关心的是Class那个属性,它就表示了该功能点对应的实现类的名称,比如新建功能对应的就是ICSharpCode.SharpDevelop.Commands.CreateNewFile这个类。通过这种方式,我们可以快速的找到我们感兴趣的类名称,进而从代码里定位。
posted on 2010-04-30 16:54  小胖胖  阅读(820)  评论(2编辑  收藏  举报