ASP.NET MVC 中出现的 方法 中的 this 关键字 用法 (this HtmlHelper helper)

ASP.NET MVC 中出现的 方法 中的 this 关键字 用法 (this HtmlHelper helper)html

最近在看ASP.NET 的MVC2编程模型,发现里面有一种很奇怪的this用法,之前从没有见过,通过2个小时的翻阅资料查找终于得出告终论,和你们分享一下(可能理解有不全面的地方,但愿你们指正)编程

public static string ScheduleEntries(this HtmlHelper helper, ...)ide

这个是我在一个外国论坛上搜到的问题,下面有句回答是:post

The way it works for MVC is that Html in the view is a property of HtmlHelper type on the ViewPage class.this

我大概理解了下,意思好像是说 “把视图中的HTML做为一个htmlhelper类型的属性”,这里面的Html只什么一直不是很明白,猜想应该是指只当前对象吧,也就是把当前对象做为HtmlHelper的一个参数。经过这句话我只能理解到这里了。url

后来又看到了一个MVC写的分页控件,里面也有一样的写法:spa

public static IPagedList<T> ToPagedList<T>(this IEnumerable<T> source, int pageIndex, int pageSize, int totalCount)
{
return new PagedList<T>(source, pageIndex, pageSize, totalCount);
}

而后看了下是怎么调用该方法的,发现只要是继承了IEnumerable<T>接口的均可以调用该方法,而且第一个参数隐藏了,这样就比较清晰了,这里的ToPagedList<T>(…)方法被添加到继承接口IEnumerable<T>的类中,此方法带有this的那个参数则自动默认为拥有该方法的当前对象,理解了这些就能够在方法体中大胆的发挥了。code

private IList<Product> allProducts = new List<Product>();
IpagedList<Product> ProductList this.allProducts.ToPagedList(currentPageIndex, defaultPageSize)

上面两行代码是对如何调用拥有this关键字方法的举例,但愿能给你们起到帮助,帮助你们理解。有不对的地方,也欢迎你们指正.htm

相关文章
相关标签/搜索