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類型。