当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#之 VS2008 之 Extension Methods

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

ASP.NET 中的 C#之 VS2008 之 Extension Methods


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 105 ::
收藏到网摘: n/a

  C#之 VS2008 之 Extension Methods。这功能让我激动不已。它可以为某一类型的变量(如string,int等)添加上我们自己增加的一些“额外”的方法,比如我们自己为一string 类型的的变量strEmail添加上一个IsValidEmailAddress方法,怎么样?这个方法是否心动?原来我们要实现这个功能着实是会费一番功夫,可是如今有了Extension Methods,很简单即可搞定它:

  方法如下:

  新添加一个静态类,比如代码为:

1using System;
  2using System.Data;
  3using System.Configuration;
  4using System.Linq;
  5using System.Web;
  6using System.Web.Security;
  7using System.Web.UI;
  8using System.Web.UI.WebControls;
  9using System.Web.UI.WebControls.WebParts;
  10using System.Web.UI.HtmlControls;
  11using System.Xml.Linq;
  12using System.Text.RegularExpressions;
  13
  14/**//// 
  15/// Summary description for MyStaticExtension
  16/// 
  17public static class MyStaticExtension
  18{
  19 public static bool IsValidEmailAddress(this string strEmail)
  20 {
  21 Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
  22 return regex.Match(strEmail).Success;
  23 }
  24
  25 public static bool IsBiggerThan10(this int intNumber)
  26 {
  27 if (intNumber > 10) return true;
  28 return false;
  29 }
  30}

  在这个类中有两个静态的方法,其中一个是IsValidEmailAddress(this string strEmail),另外一个是IsBiggerThan10(this int intNumber);

  注意这两个方法均是静态的,而且你注意到了么,它的参数前都有一个this关键字来修饰,这就是告诉编辑器,要将string类型的变量加上该IsValidEmailAddress方法,将int类型的变量加上IsBiggerThan10的方法。OK,既然准备好了,我们就开始使用它:

  首先,因为我们在该工程中只用到了一个命名空间,所以你在使用它的类中可以using MyStaticExention,也可以不using,二者均可

  然后我们就可以直接在类中使用了:

  1 string strEmail = "aa";
  2 strEmail.IsValidEmailAddress();
  1 int a = 10;
  2 bool bl = a.IsBiggerThan10();

  这个功能真让人振奋!