1 Net设计器基础框架
.net设计器基础框架所在的命名空间是System.ComponentModel.Design,而wf、asp.net、win from这三种设计器架构都是建立在.Net本身提供的基础框架之上。
wf设计器框架所在的命名空间是System.Workflow.ComponentModel.Design,相关类都在这个NameSpace里面。在研究wf设计器之前,我们先看看Winform设计器。对Winform设计器的研究,对WF设计器的理解很有帮助。
1.1 Winform设计器设计:
曾经研究过几天SharpDevelop,一个免费开源的IDE开发环境,并且有类似eclipse的插件思想。在这个开源IDE里面有比较完整的Winform设计器实现。Winform
IDE主要依靠下面几个接口和类实现。只要实现了相关的接口和抽象,.Net框架会帮助我们实现Winform设计器。很像模板方法。相应的接口和类为:
Winform设计器结构
ü DesingerHost:
1.服务管理:服务容器和服务提供者
2.组件管理和事务管理
ü ISite:
绑定组件和容器,DesignerHost中所有的服务都可以通过ISite(GetService)得到
ü IServiceProvide
ü IDesinger
提供定制服务,设计期在组件的上下文菜单中添加菜单命令,添加的组件实现操作
Initialize方法中与ICompont关联
工具箱实现:
ü IToolboxService
工具箱服务,主要目的是存储ToolboxItem
如何填充工具箱?
要使用ToolboxItemFilterAttribute
AddToolboxEntries:listbox.Items.Add(new SelfHostToolboxItem(entry)
CategoryNames:工具箱类别属性
AddCreator:
其中的WorkflowDesignerControl我觉得是Mediator模式的应用
ü 选取服务
相关assemblies和CCU的容器:TypeProvider
大家可以down下SharpDevelop的源代码看看,有本书专门介绍这个的。