快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
    object obj4 = propertyValues["Z"];
     if (((obj2 == null) || (obj3 == null) || (obj4 == null)) ||  (!(obj2 is
       int) || !(obj3 is int) || !(obj4 is int)))
     {
       throw new Exception("鯉塀音屎鳩!");
     }
     return new SolidCoordinate((int)obj2,(int)obj3,(int)obj4);
   }
   public override bool GetPropertiesSupported(ITypeDescriptorContext  context)
   {
     return true;
   }
   public override PropertyDescriptorCollection GetProperties (ITypeDescriptor  Context context,object value,Attribute[] attributes)
   {
     return TypeDescriptor.GetProperties(typeof(SolidCoordinate),attributes).  Sort(new string[] { "X","Y","Z" });
   }
}

SolidCoordinateConverter 类继承于类型转换器基类TypeConverter ,主要重写 TypeConverter 类的一些可重写方法,从而实现自定义的类型转换器。

方法CanConvertFrom 具有两个参数,第一个参数表示当前上下文变量,通过此参数可以获取当 前容器、当前类实例和属性描述等信息;第二个参数sourceType 表示当前要转换的类型。在这里 ,此方法主要判断是否能从第二个参数的类型(源类型)转换为SolidCoordinate 类型,如果源类 型是字符串,则返回true ,否则调用基方法,由基方法来决定返回值。

方法CanConvertTo 同样也具有两个参数,第一个参数与上面CanConvertTo 相同意义;第二个 参数destinationType 表示要转化到的目标类型。该方法在这里表示是否能够把SolidCoordinate 转换为destinationType 类型。方法体中的InstanceDescriptor 类表示实例描述类,提供创建对 象所需的信息,在后面ConvertTo 方法中会详细介绍。切换到源代码视图时所有代码都是以string 类型标记的。

方法ConvertFrom 具有三个参数,第一个参数为ITypeDescriptorContext 类型的context ,与 前面CanConverFrom 中参数具有相同意义;第二个参数为CultureInfo 类型的culture ,提供有关 特定区域性的信息(如区域性的名称、书写系统和使用的日历),以及设置日期和字符串 排序的 格式。CultureInfo 类保存区域性特定的信息,如关联的语言、子语言、国家/ 地区、日历和区域 性约定。此类还提供对DateTimeFormatInfo 、NumberFormatInfo 、CompareInfo 和TextInfo 的 区域性特定实例的访问,在方法ConverFrom 中使用到了访问它的TextInfo 信息;第三个参数为 object 的value ,表示要进行转换的类型,这里是要把value 转换为SolidCoordinate 类型。

ConverFrom 方法体中代码部分主要实现从源类型(第三个参数value )到类型 SolidCoordinate 的转换,最后返回一个SolidCoordinate 类型的实例。value 在这里其实是一个 “3,5,8 ”格式的字符串。首先根据区域文化对象获取到分隔符:

char ch = culture.TextInfo.ListSeparator[0];

分隔符也可以直接固定为逗号,如char ch ="," ;既然在curture 的TextInfo 对象中提供了 分隔符,我们就直接使用它定义的。在TextInfo 下的ListSeparator 是一个分隔符列表数组,第 一项为"," ,所以我们就取它的ListSeparator[0] 作为分隔符。

然后把value 值通过分隔符拆分到一个字符串数组中:

string[] strArray = str2.Split(new char[] { ch });

由于SolidCoordinate 类的三个属性(X,Y,Z )都是整型的,因此我们再定义一个整型数组 numArray ,并使用系统的int 类型转换器的方法把字符串数组中的每项都转换

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号