C# “;这”;web api中的函数内参数
我正在开发web api,我们已经创建了HtmlLHelper类,我看到的声明如下:C# “;这”;web api中的函数内参数,c#,asp.net-mvc-4,this,asp.net-web-api,C#,Asp.net Mvc 4,This,Asp.net Web Api,我正在开发web api,我们已经创建了HtmlLHelper类,我看到的声明如下: public static string GetCountryDomain(this System.Web.Mvc.HtmlHelper htmlHelper, Area area) { //body } 在我的控制器中,我想调用上面的函数。它需要两个参数 HtmlHelper.GetCountryDomain(area_id); 有人能解释一下调用上述函数需要传递的第一个参
public static string GetCountryDomain(this System.Web.Mvc.HtmlHelper htmlHelper, Area area)
{
//body
}
在我的控制器中,我想调用上面的函数。它需要两个参数
HtmlHelper.GetCountryDomain(area_id);
有人能解释一下调用上述函数需要传递的第一个参数吗?
这个
关键字标记了一个扩展方法。有两种方式来称呼它:
- 您可以像调用
上的实例方法一样调用它,或者HtmlHelper
- 您可以像传递两个参数的普通
方法一样调用它static
GetAreaById
是一种扩展方法。因此,第一个参数已经是HtmlHelper
这是一种扩展方法。您可以正常调用它,在这种情况下,您需要向静态方法传递System.Web.Mvc.HtmlHelper的实例和int。由于它是一个静态方法,因此还需要指定类:
Area area = HtmlHelperExtensions.GetAreaById(htmlHelper, i);
但也可以调用扩展方法,就好像它们是第一个参数的实例方法一样:
Area area = htmlHelper.GetAreaById(i);
var helper = new System.Web.Mvc.HtmlHelper();
var area = ClassWhereMethodIsDefined.GetAreaById(helper, id);
这只是语法上的糖;现实中发生的是第一个电话。有关更多信息:
您编写了一个扩展方法。该语法旨在模拟向现有类添加方法。您将传递一个
HtmlHelper
对象作为第一个参数
此特定类型的帮助器类在您的视图中可用
You can use the HtmlHelper class in a view by using the built-in
Html property of the view. For example, calling @Html.ValidationSummary()
renders a summary of validation messages.
GetAreaById
是一个。您可以将其视为“附加”到特定类型实例的方法,但不在该类型的定义中定义
此外,作为一种静态方法,它可以以两种方式使用:
作为前面带有this
关键字的类型的实例方法
var helper = new System.Web.Mvc.HtmlHelper();
var area = helper.GetAreaById(id);
作为静态方法,将实例作为参数传递:
Area area = htmlHelper.GetAreaById(i);
var helper = new System.Web.Mvc.HtmlHelper();
var area = ClassWhereMethodIsDefined.GetAreaById(helper, id);
你好我稍微修改了我的函数。请看一看,这家伙总是解释得很清楚: