Я привык к методам расширения, представляемым intellisense, после того, как введен тип this.Но когда я пытаюсь сделать это с помощью HtmlHelper, методы расширения не отображаются, даже если присутствует оператор using.Почему это?Чтобы уточнить, я делаю этот тест из обычного файла .cs, а не файла .cshtml.Нет веской причины, я просто играю с пространством имен MVC и языком, чтобы «увидеть, как это работает».Я до сих пор не знаю, почему intellisense не принимает все 4000 расширений (я преувеличиваю, но их много).
Говоря о тысячах расширений, почему эти вспомогательные процедуры предоставляются как методы расширения?Если бы использовались типичные статические классы, то, вероятно, образец сигнатуры бритвы был бы:
@EditorExtensions.EditorFor<T>(...)
Кажется выполнимым, а в «Руководстве по разработке структуры» говорится, что расширения следует использовать редко, и предпочтительно:
- только против типов интерфейса.
- только для типов, которые не могут быть повторно развернуты
Не похоже, что применяется какой-либо из «критериев» метода расширения.Вот почему я ожидал, что регулярные статические классы со статическими методами будут заполнять этот список.Каково было обоснование?
Обновление: Пример кода помощника без расширения (для дальнейшего обсуждения)
public static class MyHelper
{
public static MvcHtmlString Go(HtmlHelper foo){
foo.Raw("Hello");
return new MvcHtmlString("<p>What's up Doc</p>");
}
}