博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
和之前的版本相比,昨天Release的Atlas Control Toolkit变化不可谓不大
阅读量:7081 次
发布时间:2019-06-28

本文共 3047 字,大约阅读时间需要 10 分钟。

 姑且不论增加了4个新的控件,姑且不论Accordion控件的代码和使用都发生了很大变化,这次Atlas Control Toolkit的更新,改变了一些非常基础的地方。


   如果使用上一次Release的版本开发,会在项目中引入两个程序集:Microsoft.Web.Atlas.dll和 Microsoft.AtlasControlExtender.dll。Microsoft.Web.Atlas.dll是使用Atlas最根本的程序 集,自不必说。而Microsoft.AtlasControlExtender.dll则提供了在Atlas Contorl Toolkit的基础上开发Extender时所需要的一些类。从Atlas Contorl Toolkit的基础上开发Extender是推荐的做法。具体来说,开发一个Extender所需要的三个类,XXXDesigner, XXXExtender和XXXProperties是分别继承了 Microsoft.AtlasControlExtender.Design.ExtenderControlBaseDesigner<T, K>,Microsoft.AtlasControlExtender.ExtenderControlBase<T, C>和Microsoft.AtlasControlExtender.TargetControlPropertiesBase< C>,它们定义了开发一个Extender所需类的基础,因此大家在开发XXXExtender,XXXDesigner时几乎不用写任何代码。


  另外,之前的Atlas Control Toolkit还有一个名为AtlasControlToolkit.dll的程序集,它包含了Atlas Control Toolkit里的大大小小二十多个Extender。


   但是继承Microsoft.AtlasControlExtender.dll中那些类自然不是开发一个Extender的必要条件,否则在 Atlas Control Toolkit出现之前已经包含在Atlas中的例如AutoCompleteExtender是如何开发的呢?事实上,开发一个Extender所需要 的类XXXDesigner,XXXExtender和XXXProperties必须继承的类分别是 Microsoft.Web.UI.Design.ExtenderControlDesigner<T>, Microsoft.Web.UI.Controls.ExtenderControl<T>和 Microsoft.Web.UI.TargetControlProperties。它们都存在于Microsoft.Web.Atlas.dll中, 它们才是基础,这从Atlas自带的Extender例如AutoCompleteExtender或DragOverlayExtender都可以看出 (不过事实上,查看的Atlas Control Toolkit里的AccordionDesigner可以发现,它是直接继承了 System.Web.UI.Design.ControlDesigner,也就是说,甚至连ExtenderControlDesigner< T>也不需要。不过基于Extender对于设计期的几乎无需支持的特性,似乎这点也应该可以理解)。很明显,它们有的不是Generic Class,而在开发Extender时我们使用的都是Microsoft.AtlasControlExtender.dll中的Generic Class,它们继承了Microsoft.Web.Atlas.dll中的基础类,提供了一些成员,极大地方便了我们对于Extender的开发。


   而在昨天的Release中,这些基础发生一些改变。首先可以发现,Microsoft.AtlasControlExtender.dll消失了!那 么那些基类都到哪里去了?打开源代码后可以发现,在AtlasControlToolkit项目里多了一个文件夹ExtenderBase,那些基础类都 被转移到了这个文件夹下。如果仅仅是这样似乎问题还不是很大,但是如果在以前的项目中引入最新的AtlasControlToolkit.dll后发现以 前编写的Extender已经无法编译了!错误提示是找不到Microsoft.AtlasControlExtender等命名空间和 ExtenderControlBase等类。查看了Atlas Control Toolkit的源代码之后才发现,原来我们之前用于开发Extender的那些基础类,它们被转移到了别的命名空间。它们已经分别成为了 AtlasControlToolkit.Design.ExtenderControlBaseDesigner<T, K>,AtlasControlToolkit.ExtenderControlBase<T, C>和AtlasControlToolkit.TargetControlPropertiesBase<T>。


   变化还不止这些,Client Script也有所改变。打开Atlas Control Toolkit的源代码里AtlasControlToolkit项目中ExtenderBase/BaseScripts.js文件可以发现 AtlasControlToolkit.BehaviorBase类的定义。这是Behavior的基类,以Tutorial里 DisableButton为例,以前DisableButton.DisableButtonBehavior类的继承代码 DisableButton.DisableButtonBehavior.registerSealedClass('DisableButton.DisableButtonBehavior', Microsoft.AtlasControlExtender.BehaviorBase)现在就必须改为 DisableButton.DisableButtonBehavior.registerSealedClass('DisableButton.DisableButtonBehavior', AtlasControlToolkit.BehaviorBase)了。


  查看了一下新的Template,上面提到的地方也已经被相应地改变了。以前如果开发的Extender,最好还是将源代码拿出来修改后重新编译吧。否则,就必须保留以前的程序集一起使用。


   总的来说,个人认为这次的改变也有它的一些道理。首先,目前的代码已经完全将所有的类放在了AtlasControlToolkit命名空间下,不会 “污染”到“Microsoft.*”命名空间,这对于一个以第三方开源库身份出现的程序集来说不失为一个所需的做法。其次,以前存放在 Microsoft.AtlasControlExtender.dll的那些类也被开源了,想看那些源代码的人(比如我)也可以暂时放下手上的 Refletor,以一种“光明正大”的姿态阅读那些代码了。:)

本文转自 jeffz 51CTO博客,原文链接:http://blog.51cto.com/jeffz/60957,如需转载请自行联系原作者

你可能感兴趣的文章
MySQL内存设置—— MySQL server has gone away
查看>>
Java语言中的----运算符
查看>>
Cannot Register the virtual hard
查看>>
Linux系统的各种后门和日志工具详细介绍
查看>>
支付宝及时到账支付成功返回信息
查看>>
linux基础之bash基础
查看>>
MyEclipse 快捷键
查看>>
jQuery data- 取值
查看>>
05-k8s-fannel
查看>>
冷饭热炒-谈DOS和DDOS***
查看>>
ntop的安装与使用
查看>>
ES Java API_基于bulk实现多4S店销售数据批量上传
查看>>
TypeScript基础入门之JSX(二)
查看>>
根据某一字段值相同合并字符串 - - SQL
查看>>
django-关于JSON编码格式的异常处理
查看>>
debian 系统版本 划分、识别、演进 的释疑(升级系统须知)
查看>>
如何编写nagios插件
查看>>
LVS 工作原理解析
查看>>
mysql并发控制
查看>>
轻松识别Windows 2008服务器角色与功能
查看>>