我想创建控制器扩展方法。到目前为止我得到的是下面
public ActionResult Foo()
{
this.ExtensionMethod();
return View();
}
public static void ExtensionMethod(this Controller controller)
{
}
我不喜欢的是必须使用this
关键字调用 ExtensionMethod。有可能摆脱this
吗?
我想创建控制器扩展方法。到目前为止我得到的是下面
public ActionResult Foo()
{
this.ExtensionMethod();
return View();
}
public static void ExtensionMethod(this Controller controller)
{
}
我不喜欢的是必须使用this
关键字调用 ExtensionMethod。有可能摆脱this
吗?
不。
它是this
使该方法成为扩展方法的关键字。没有它,它只是一个静态方法。
编辑:对不起,我误读了这个问题。有两个this
关键字:一个在扩展方法中,一个用于调用它。
调用它时需要关键字的原因this
是您需要指定要扩展的对象。this
除非您指定关键字,否则 C# 不会自动将本地方法调用解析为扩展方法。
这就是来龙去脉。你不能对它做任何事情。
您可能会考虑将其放入基类中——这通常不是一个好主意(因为它会炸毁基类)。
你可以像这样使用它。
this.ExtensionMethod();
或者
ExtenstionClassName.ExtensionMethod(this);
你的选择...