随笔分类 - Util应用程序框架公共操作类
Util应用程序框架公共操作类
摘要:今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误。 我增加了几个单元测试来捕获错误,代码如下。 /// /// 测试值为枚举 /// [TestMethod] ...
阅读全文
摘要:本篇介绍的表达式生成器,用于动态创建表达式。 在Util项目Lambdas目录中,添加ExpressionBuilder,代码如下。using System;using System.Linq.Expressions;namespace Util.Lambdas { /// //...
阅读全文
摘要:当你使用可空的值类型时,你会发现取值很不方便,比如Guid? obj,你要从obj中获取值,可以使用Value属性obj. Value,但obj可能为null,这时候就会抛出一个异常。 可空值类型提供了一个HasValue属性,它可以识别出obj是不是一个null值,每当你获取可空值都需要加上...
阅读全文
摘要:上一篇对Lambda表达式公共操作类进行了一些增强,本篇使用扩展方法对Lambda表达式进行扩展。 修改Util项目的Extensions.Expression.cs文件,代码如下。using System;using System.Linq;using System.Linq.Express...
阅读全文
摘要:前面介绍了查询的基础扩展,下面准备给大家介绍一些有用的查询封装手法,比如对日期范围查询,数值范围查询的封装等,为了支持这些功能,需要增强公共操作类。 Lambda表达式公共操作类,我在前面已经简单介绍过,要么从Lambda表达式中获取信息,要么动态创建Lambda表达式,本篇直接贴代码,如果发...
阅读全文
摘要:前一篇扩展了两个常用验证方法,本文将封装两个Lambda表达式操作,用来为下一篇的查询扩展服务。 Lambda表达式是一种简洁的匿名函数语法,可以用它将方法作为委托参数传递。在Linq中,大量使用Lambda表达式进行查询,不过这种Lambda表达式被Expression包装成表达式树。表达式...
阅读全文
摘要:前面介绍了仓储的基本操作,下面准备开始扩展查询,在扩展查询之前,首先要增加两个公共操作类,一个是经常要用到的验证方法,另一个是Lambda表达式的操作类。 很多时候,我们会判断一个对象是否为null,由于null是一个不能接受的值,它会导致“未将对象引用设置到对象的实例”的严重错误,所以当检测...
阅读全文
摘要:任何系统都需要处理错误,本文介绍的异常公共操作类,用于对业务上的错误进行简单支持。 对于刚刚接触.Net的新手,碰到错误的时候,一般喜欢通过返回bool值的方式指示是否执行成功。public bool 方法名() { //执行代码,成功返回true,否则返回false} 不过上面的方法...
阅读全文
摘要:为了能够验证领域实体,需要一个验证公共操作类来提供支持。由于我将使用企业库(Enterprise Library)的验证组件来完成这项任务,所以本文也将演示对第三方框架的封装要点。 .Net提供了一个称为DataAnnotations的验证技术,即在对象的属性上添加一些Attribute,比如...
阅读全文
摘要:上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化。 下面以字符串转换为List为例进行讨论。string input = "83B0233C-A24F-49FD-8083-1337209EBC9A,EA...
阅读全文
摘要:上一篇介绍了数据类型转换的一些情况,可以看出,如果不进行封装,有可能导致比较混乱的代码。本文通过TDD方式把数据类型转换公共操作类开发出来,并提供源码下载。 我们在 应用程序框架实战十一:创建VS解决方案与程序集 一文已经创建了解决方案,包含一个类库项目和一个单元测试项目。单元测试将使用.Ne...
阅读全文
摘要:本系列文章将介绍一些对初学者有帮助的辅助类,这些辅助类本身并没有什么稀奇之处,如何能发现需要封装它们可能更加重要,所谓授之以鱼不如授之以渔,掌握封装公共操作类的技巧才是关键,我会详细说明创建这些类的动机和思考过程,以帮助初学者发现和封装自己需要的东西。创建公共操作类的技巧,大家可以参考我的这篇文...
阅读全文