深度解析 TypeConverter & TypeConverterAttribute (一)

前言


    我们在开发复杂控件的时候不可避免的碰到类型转换TypeConverter,微软给我们提供了很多转换类如ArrayConverter,BaseNumberConverter,BooleanConverter(MSDN上更多:ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref3/html/N_System_ComponentModel.htm)等直接或间接的继承了TypeConverter类。我们在类型转换的时候经常用到这些类。然而我们如何编写自定义的TypeConverter类呢,又怎么样在复杂控件中使用呢。

TypeConverter Class
   
TypeConverter类就是将一种类型(object,可以说是任何类型)转换到另一种类型(一般为string),或者将另一种类型转换回来。所有继承TypeConverter类型的都必须实现4个方法:(这里以另一种类型string为例)
    CanConverterTo 有两个重载方法,
             TypeConverter.CanConvertTo (Type)
             TypeConverter.CanConvertTo (ITypeDescriptorContext, Type)
       都有一个Type参数(要转换成什么类型),例如我们设计的要转换成string,在方法体里面判断这个参数的Type如果是string,则返回true,否则返回           false
    ConverterTo 也有两重载,
             TypeConverter.ConvertTo (Object, Type)
             TypeConverter.ConvertTo (ITypeDescriptorContext, CultureInfo, Object, Type)
       都有Object和Type参数,将Object转成Type类型的Object,返回Type类型的Object。
  下面类似的两个方法,不过方向相反,是从其他类型装换回来。
    CanConverterFrom 重载,
             TypeConverter.CanConvertFrom (Type)
             TypeConverter.CanConvertFrom (ITypeDescriptorContext, Type)
       在方法体里面判断参数Type是不是能转换回来的类型,例如string类型,如果是返回true,否则返回false。
    ConverterFrom 重载,
            TypeConverter.ConvertFrom (Object)
            TypeConverter.ConvertFrom (ITypeDescriptorContext, CultureInfo, Object)
       在方法体里面判断参数Object的类型是不是能转换回来的类型,例如string类型,如果是返回转换回来的类型。
      
    举例说明,以GPS经纬度位置为例,经纬度位置GPSLocation包括复杂属性经度 Longitude和纬度 Latitude。现我们根据其一属性Longitude类写个LongtitudeTypeConverter类。
    首先我们得有个Longtitude类吧。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值