6

コントローラ拡張メソッドを作成したいのですが。私がこれまでに得たものは以下です

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

public static void ExtensionMethod(this Controller controller)
{

}

私が気に入らないのは、ExtensionMethodをthisキーワードで呼び出す必要があることです。取り除くことは可能thisですか?

4

3 に答える 3

11

いいえ。

thisメソッドを拡張メソッドにするキーワードです。それがなければ、それは単なる静的メソッドです。

編集:申し訳ありませんが、質問を読み間違えました。2つのthisキーワードがあります。1つは拡張メソッドにあり、もう1つはそれを呼び出すために使用されます。

thisキーワードを呼び出すときにキーワードが必要な理由は、拡張されるオブジェクトを指定する必要があるためです。thisキーワードを指定しない限り、C#は拡張メソッドへのローカルメソッド呼び出しを自動的に解決しません。

于 2012-08-24T08:44:39.250 に答える
3

そうです。あなたはそれに対して何もすることはできません。

あなたはそれを基本クラスに入れることを考えるかもしれません-それはほとんど素晴らしい考えではありません(それは基本クラスを爆破するからです)。

于 2012-08-24T08:44:56.770 に答える
2

のように使用できます。

this.ExtensionMethod();

また

ExtenstionClassName.ExtensionMethod(this);

あなたの選択...

于 2012-08-24T10:04:51.783 に答える