c#扩展方法奇思妙用高级篇四:对扩展进行分组管理
2010-09-30 20:56:53 来源:WEB开发网这里需要两个类,一个类ChineseString作为AsXXX的返回值,第二个类ChineseStringExtension是对ChineseString进行扩展的类。能过这种方式,才能显示出扩展的标识符号!每组扩展要两个类,比较麻烦。
方式一、方式二感觉都不太好,而且扩展组多了,还会有新的问题出现,如下:
也是很要命的!再来看第三种方式,这是我和韦恩卑鄙在讨论单一职责原则时想出来的,先看效果:
方法三将所有的扩展精简为一个As<T>!是的,我们仅需要As<T>这一个扩展!T为一接口,通过输入不同的T,展示相应的扩展。这样又解决了扩展组的泛滥问题,先看下实现一个新的扩展组需要写什么代码,先看左图的代码:
1 public interface IConvertableString : IExtension<string> { }
2
3 public static class ConvertableString
4 {
5 public static bool IsInt(this IConvertableString s)
6 {
7 int i; return int.TryParse(s.GetValue(), out i);
8 }
9 public static bool IsDateTime(this IConvertableString s)
10 {
11 DateTime d; return DateTime.TryParse(s.GetValue(), out d);
12 }
13
14 public static int ToInt(this IConvertableString s)
15 {
16 return int.Parse(s.GetValue());
17 }
18
19 public static DateTime ToDateTime(this IConvertableString s)
20 {
21 return DateTime.Parse(s.GetValue());
22 }
23 }
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换
更多精彩
赞助商链接