Метод расширения и страница бритвы - PullRequest
4 голосов
/ 16 февраля 2011

Я определил метод расширения в app_code, как показано ниже.

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

На странице бритвы все, что угодно, может сказать Привет :)

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

Но @Hi() не работает. Есть ли способ заставить @Hi() работать?

Ответы [ 3 ]

5 голосов
/ 16 февраля 2011

C # позволяет только вызывать методы расширения, квалифицированные экземпляром объекта.
Если у вас есть метод расширения, расширяющий ваш тип, вы не можете вызывать его «напрямую»; вам нужно написать this.ExtensionMethod().

Единственный способ сделать то, что вы просите, - это создать класс, который наследует WebPage (или WebViewPage для представлений MVC), и изменить страницу Razor для наследования этого класса (используя директиву @inherits)

1 голос
/ 16 февраля 2011

Не думаю, что вы можете звонить просто @Hi (). Уверен, это должно быть @ this.Hi ()

0 голосов
/ 14 марта 2013

Как и в обычном сценарии, вы должны включить его в использование.бритва синтаз

@using Namespace.Namespace
...