快速业务通道

Asp.net 3.5控件和组件开发技术系列—服务器控件属性(四)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

4.6.2  定制自己的类型转换器

系统已经提供了很多的类型转换器,能够满足一般情况下开发的需要。但开发控件时,并不是 所有的属性类型都是那些简单的且系统已知的int,string 等类型,即控件的属性类型可以是我们 定义的任意类型,因此系统不能够自动检测到该使用哪个类型转换器,这种情况就需要我们为自己 的属性定制专门的类型转换器。

实现自己的类型转换器,一般需要以下5 个步骤:

定义一个从TypeConverter 派生的类,TypeConverter 类提供了将值的类型转换为其他类型, 以及访问标准值和子属性的统一方法。其主要是重载类的一些正反向转换方法。

重写CanConvertFrom 方法,在方法中指定是否可以从字符串转换为指定的类型。

重写ConvertFrom 方法,实现从字符串到指定类型的转换。

重写CanConvertTo 方法,指定 是否能从SolidCoordinate类转换为string或 InstanceDescriptor类型 。InstanceDescriptor 是提供创建对象实例所需信息的类。转换为字符 串类型不需要重写此方法。

重写ConvertTo 方法,实现转换。

其中上面2 ,3 ,4 ,5 都是重载方法。下面就以两个例子说明类型转换器的创建过程。

4.6.2.1 三维坐标类型转换器

大家都知道在.NET Framework 中有Point 类,如果把该类作为属性的类型,则系统会自动调用 它的类型转换器进行类型转换。比如在属性窗口中设置属性值,切换到源代码视图时即调用类型转 换器进行转换;或在运行时控件状态或视图状态对存储的对象进行序列化和反序列化。

这里我们定义一种新的坐标类型SolidCoordinate 类,并为其定义匹配的类型转换器,以此说 明如何自定义和使用类型转换器。

先来看一下实现后的效果,在属性窗口中设置SolidCoordinate 类型的属性,如图4-31 所示。

然后,切换到源代码视图,则会看到如下代码:

<cc1:CustomeTypeConverterControl ID="CustomeTypeConverterControl1"  runat= "server" SolidCoordinate="3,5,8" />

在切换到源代码视图时,转换器类就起作用了,它会把SolidCoordinate 转换成字符串类型, 因为在源代码模式下所有代码类型只能以字符串格式存在

yConverter 用于在属性值和字符串之间进行转换的转换器 DataBindingCollectionConverter DataBindingCollection 对象的类型转换器 DataFieldConverter 可从当前组件的选定数据源中检索数据字段的列表 DataMemberConverter 可从当前组件选定的数据源中检索数据成员的列表 DataSourceConverter 数据源类型转换器 CursorConverter 将Cursor 对象与其他各种表示形式相互转换 FontNamesConverter 将包含字体名称列表的字符串转换为包含个别名称的字符串数组,它还执行反转功能 FontUnitConverter 转换字体单位类型 StringArrayConverter 在以由逗号分隔的值组成的字符串与字符串数组之间进行转换 ControlIDConverter 控件ID 列表转换器,4.6.1.3 小节已经作过示例 TargetConverter 将从Web 导航产生的内容的位置(目标)的值转换为字符串。该类还将字符串转换为目 标值 ValidatedControlConverter 初始化ValidatedControlConverter 类的新实例

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号