4

以下のようにapp_codeで拡張メソッドを定義しました。

public static class Extensions
{
    public static string Hi(this object obj)
    {
        return "hi";
    }
}

かみそりのページでは、何でもこんにちはと言うことができます:)

@Html.Hi();
@Request.Hi();   
@this.Hi();

しかし、@Hi()動作しません。@Hi()仕事をする方法はありますか?

4

3 に答える 3

5

C#では、オブジェクトインスタンスによって修飾された拡張メソッドのみを呼び出すことができます。
タイプを拡張する拡張メソッドがある場合、それを「直接」呼び出すことはできません。あなたは書く必要がありますthis.ExtensionMethod()

求めていることを実行する唯一の方法は、WebPage(またはMVCビューを)継承するクラスを作成し、(ディレクティブWebViewPageを使用して)そのクラスを継承するようにRazorページを変更することです。@inherits

于 2011-02-16T01:50:51.410 に答える
1

@Hi()だけを呼び出すことはできないと思います。確かに@this.Hi()である必要があります

于 2011-02-16T01:48:13.963 に答える
0

通常のシナリオと同じように、それを使用に含める必要があります。かみそりのsyntazは

@using Namespace.Namespace
于 2013-03-14T13:17:32.510 に答える