我已經實現了一些擴展方法,並將它們放在單獨的類庫項目中。類庫項目中的擴展方法
想象我在類庫這樣一個簡單的擴展方法稱爲MD.Utility:
namespace MD.Utility
{
public static class ExtenMethods
{
public static bool IsValidEmailAddress(this string s)
{
Regex regex = new Regex(@"^[\w-\.][email protected]([\w-]+\.)+[\w-]{2,4}$");
return regex.IsMatch(s);
}
}
}
但無處在Web應用程序像App_Code文件夾或WebFroms代碼隱藏頁,我不能使用這個擴展方法。如果我這樣做:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MD.Utility;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string email = "[email protected]";
if (email.IsValidEmailAddress())
{
//To do
}
}
}
編譯器無法識別IsValidEmailAddress(),甚至沒有智能感知支持。
雖然如果我將我的擴展方法放在App_Code文件夾中,那麼可以在App_code文件夾或Web Form代碼隱藏頁面中的其他cs文件中使用。
有一個對classLibrary項目的引用,但我不知道爲什麼當我重建解決方案時,dll不會更新,如果我嘗試再次添加引用,它會提示已經有一個引用,當你說這應該是工作,我刪除了Dll並再次添加了引用,並且工作。感謝driis。你知道爲什麼我的Dll不會自動更新嗎? – Mostafa 2010-04-18 16:06:56
聽起來很奇怪。還有一件事要檢查,就是該項目設置爲爲當前的構建配置構建。在你的工具欄上你有一個下拉菜單來切換配置(調試,發佈)。該下拉菜單中的最後一個元素將顯示一個對話框,您可以在其中選擇或取消選擇用於在各種構建配置中構建的項目。 – driis 2010-04-18 16:15:32
@Mostafa,您可能一直在將您的庫DLL構建到與您引用的目錄不同的目錄中。 – 2010-04-18 16:51:17