利用C# 3.0提供的扩展方法技术,可以为已经编译好的程序集类型增加新的方法,从而应对新的扩展。除了在可扩展性方面所具有的优势之外,如果能够合理地结合泛型与类型推断,扩展方法还可以有效降低代码的重复,提高程序的可重用性。例如,这样的方法实现:
public class CustomerDAL { public IEnumerable<Customer> FindCustomers(string roleName) { return from customer in context.Customer where customer.RoleName.Equals(roleName) select customer; } }
当方法返回的结果为null时,采用如下方式进行调用,就会抛出NullReferenceException异常:
Customer customer = new CustomerDAL().FindCustomers(Role.Admin).First();
我们需要对返回结果进行验证,如果返回为null,则可以抛出自定义异常,或者创建一个空对象,例如:
public IEnumerable<Customer> FindCustomers(string roleName) { IEnumerable<Customer> customers = from customer in context.Customer where customer.RoleName.Equals(roleName) select customer; if (customers == null) { throw new MyException("Cann't find the customers."); } return customers; }
如果系统有许多方法都需要对返回结果进行验证,则这样的验证逻辑就会充斥在各个方法体中,既不利于重用,也会对未来的修改造成极大的阻碍。当然,我们可以引入Null Object模式来替代对null值的判断逻辑,但这种方式仍然需要为多种类型定义不同的Null Object类型。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c#
, 验证
, 方法
, 类型
, ienumerable
验证扩展
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。