前面介紹了倉儲的基本操作,下面準備開始擴充套件查詢,在擴充套件查詢之前,首先要增加兩個公共操作類,乙個是經常要用到的驗證方法,另乙個是lambda表示式的操作類。
很多時候,我們會判斷乙個物件是否為null,由於null是乙個不能接受的值,它會導致「未將物件引用設定到物件的例項」的嚴重錯誤,所以當檢測到null值時一般直接丟擲argumentnullexception異常。
publicvoid test( string
name )
由於判斷null是乙個頻繁操作,可以用乙個擴充套件方法來封裝它,像下面這樣呼叫。
publicvoid test( string
name )
我直接將checknull擴充套件到object物件上,因為絕大部分物件都需要這個操作。注意,擴充套件object要非常謹慎,會導致大面積汙染,因為所有物件都會看見這個擴充套件方法,如果這個操作對某些物件有***,就會造成更多混亂。
另乙個常用的方法也是判斷是否為空,比如字串的」」,或者guid的guid.empty。
對於string,我們一般通過string.isnullorwhitespace來進行判斷。
publicvoid test( string
name )
使用擴充套件方法封裝後,簡化為下面的**。
publicvoid test( string
name )
isempty擴充套件方法,我定義在string、guid、guid?等具體型別上,不能擴充套件到object,因為每種型別的實現不同,當然可以進行各種判斷,但執行效率可能非常低下,畢竟這是乙個常用方法。
在util專案中新增extensions.validate檔案,它是extensions的部分類,**如下。
usingsystem;
namespace
util
//////
是否為空
/// ///
值 public
static
bool isempty( this
string
value )
//////
是否為空
/// ///
值 public
static
bool isempty( this guid?value )
//////
是否為空
/// ///
值 public
static
bool isempty( this
guid value )
}}
單元測試**如下。
usingsystem;
using
microsoft.visualstudio.testtools.unittesting;
namespace
util.tests.extensions
//////
檢查空值,值為null則丟擲異常
///[testmethod]
[expectedexception(
typeof
( argumentnullexception ) )]
public
void
testchecknull_null_throw()
catch
( argumentnullexception ex )
}//////
測試是否空值
///[testmethod]
public
void
testisempty_string()
//////
測試是否空值
///[testmethod]
public
void
testisempty_guid()
//////
測試是否空值
///[testmethod]
public
void
testisempty_guid_nullable()
}}
.net應用程式框架交流qq群: 386092459,歡迎有興趣的朋友加入討論。
應用程式框架實戰三 什麼是應用程式框架
什麼是應用程式框架?正如框架是架構的具體實現一樣,應用程式框架是應用程式架構的具體實現。不過這樣說了等於沒說,因為框架和架構都是如此抽象。為了獲得直觀的感受,下面先看看更具體的.net framework和第三方框架。net framework為.net程式設計師提供了乙個龐大的類庫,幾乎任何開發任...
應用程式框架實戰六 應用程式框架的特點
之前說過,net framework為所有.net程式設計師提供底層支援,第三方開源框架建立在.net framework的基礎上,專門解決某些特定問題,而應用程式框架則建立在.net framework和第三方框架的基礎上,為專案開發的方方面面保駕護航。它們的作用雖然都是幫助程式設計師更好的建立應...
應用程式框架實戰三 什麼是應用程式框架
什麼是應用程式框架?正如框架是架構的具體實現一樣,應用程式框架是應用程式架構的具體實現。不過這樣說了等於沒說,因為框架和架構都是如此抽象。為了獲得直觀的感受,下面先看看更具體的.net framework和第三方框架。net framework為.net程式設計師提供了乙個龐大的類庫,幾乎任何開發任...