Я создал метод расширения для ASP.NET MVC ViewPage, например:
public static class ViewExtensions
{
public static string Method<T>(this ViewPage<T> page) where T : class
{
return "something";
}
}
При вызове этого метода из представления (полученного из ViewPage
) я получаю сообщение об ошибке "CS0103: имя" Метод "не существует в текущем контексте", если я не использую ключевое слово this
для его вызова:
<%: Method() %> <!-- gives error CS0103 -->
<%: this.Method() %> <!-- works -->
Почему требуется ключевое слово this
? Или это работает без него, но я чего-то не хватает?
(я думаю, что должен быть дубликат этого вопроса, но я не смог найти его)
Обновление
Как Бен Робинсон говорит, синтаксис для вызова методов расширения - это просто сахара-компилятор. Тогда почему компилятор не может автоматически проверять методы расширения для существующих типов базового типа, не требуя этого ключевого слова?