程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#中使用擴展方法對調用進行驗證(1)

C#中使用擴展方法對調用進行驗證(1)

編輯:關於C語言
用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類型。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved