没有这个的Controller扩展方法

时间:2012-08-24 08:39:43

标签: c# asp.net-mvc-3

我想创建控制器扩展方法。到目前为止我得到的是

public ActionResult Foo()
{
    this.ExtensionMethod();
    return View();
}

public static void ExtensionMethod(this Controller controller)
{

}

我不喜欢的是必须使用this关键字调用ExtensionMethod。是否有可能摆脱this

3 个答案:

答案 0 :(得分:8)

没有

this关键字使该方法成为扩展方法。没有它,它只是一种静态方法。

编辑:对不起,我误解了这个问题。有两个this个关键字:一个在扩展方法中,另一个用于调用它。

调用它时需要this关键字的原因是您需要指定要扩展的对象。除非您指定this关键字,否则C#不会自动解析对扩展方法的本地方法调用。

答案 1 :(得分:3)

就是这样。你无法对付它。

您可能会考虑将其放入基类 - 这通常不是一个好主意(因为它会炸毁基类)。

答案 2 :(得分:2)

你可以像使用它一样使用它。

this.ExtensionMethod();

ExtenstionClassName.ExtensionMethod(this);

您的选择......