C#通用类型转换器

C#通用类型转换器

引子

    在最近做的一个项目中,因为要在设计时和运行时都需要通过PropertyGrid对一些自定义类型的属性进行编辑,比如弹出窗体式编辑、下拉框式的编辑还有属性展开编辑等各种方式,查看了VS自己的一些控件的属性编辑,知道这就是我想要的。
    还有,就是自定义类型和字符串之间的转换(类似于int.Parse和int.TryParse这些方法),也是我经常要用到和实现的。


技术准备
   针对第一个问题,我们都知道,在设计时对属性编辑,VS会自动调用这些类型的TypeConverterAttribute和EditorAttribute等这些类型定义时候设置的类型转换器和类型编辑器。
   针对第二个问题,就相对简单了,就是实现一个自定义类型的TypeConverter。
   由于现在我需要编辑的类型都是自定义类型,并且还有一定的嵌套关系,所有要想实现相应的效果,就必须得实现我所有自定义类型的“类型转换器”和“类型编辑器”。“所有的”自定义类型,想起这个就知道工作量,海了。在起初我还耐心实现了几个自定义类型的TypeConverter,(相信针对特定类型实现转换器,大伙儿都有自己的两把刷子,不废话了)。但是,想起来还有很多自定义类型,我实在忍无可忍了。
   根据以往实现TypeConverter的经验,发现了这些“类型转换器”之间很多的共同之处。抓住这点,我决定实现一个“通用的类型转换器”,把大部分的工作都交由它处理,岂不乐哉。

开始
   在.Net或C++中,要实现“通用性”,大家第一个想起来的肯定就是泛型了,不错,实现这个无非是使用了下面的几项技术:泛型,反射。
   现把这个“通用类型转换器”公布出来,可能还有些纰漏之处,还请大家多指教。

 

 

 

使用举例

1、对属性进行分组编辑:

一些自定义类型

在自定义的控件中使用LinearBrush类型添加一个属性

在VS属性设计框中就可以看到效果了。

 

2、自定义类型和字符串之间的转换

 

 

结束
以上就是“通用类型转换器”的代码,及其使用举例,希望能减轻一点大家的重复的工作量,有什么不当之处,还请指出,方便大家,共同提高。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值