在VS環境中,我們偶爾甚至經常會在應用程式中寫擴充方法,以便可以"點點點"一直到我們的目標,這樣省時省力,雖然資源有小小的消耗,對於我這種比較懶的人來說,這實在非常有用!!!
例如我經常會擴充String的方法,比如直接截取字串方法:
public static string GetSubStr(this string orgStr, int length) {
return orgStr.Length > length ? orgStr.Substring(0, length) : orgStr;
}
或者判斷是否為數字方法
public static bool IsNumeric(this string orgStr) {
if (orgStr.IsNullOrEmpty()) {
return false;
}
foreach (char s in orgStr) {
if (s < 48 || s > 57) {
return false;
}
}
return true;
}
或者判斷字串是否為空白方法:
public static bool IsNullOrEmpty(this string orgStr) {
return string.IsNullOrEmpty(orgStr);
}
.........等等若干方法.
然而事情並非總是一番風順,在aspx頁裡用這些方法我就遇到了麻煩.例如說綁定資料列表的時候,我們通常為了美觀讓其在一行內顯示,多的字就不要,在Repeater裡有如下寫法:
傳統的(限制30個字):
<%#Eval("Subject").ToString().Length > 30 ? ((string)Eval("Subject")).SubString(0,30) : Eval("Subject")%>
使用擴充方法後:
<%#Eval("Subject").ToString().GetSubStr(30)%>
字數變簡潔了,一個企業站首頁如果有N個列表的話,可以看到省掉不少字啦!
但麻煩來了,瀏覽時報這個擴充方法未定義錯,從理論上講,aspx頁繼承了aspx.cs類,那麼aspx.cs類裡引用了XXXX.BLL名稱空間,那麼aspx應該也可以請求,但事實上請求不到,所以只好在頁面頂部第二行加上如下代碼:<%@ Import Namespace="XXXXX.BLL" %>
調試運行,成功!