我已经实现了一些扩展方法,并将它们放在单独的类库项目中。类库项目中的扩展方法
想象我在类库这样一个简单的扩展方法称为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