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