Типизированные шаблоны стиля CodeRush для ReSharper
Я большой поклонник CodeRush и их философии в отношении шаблонов. На моей нынешней работе мы будем делать большое количество пар, и консенсус - это предпочтение для ReSharper (v6), что в значительной степени ставит меня в место, где я ДОЛЖЕН использовать его.
Я не собираюсь начинать войну CodeRush/Resharper здесь. Есть много вещей, которые могут понравиться в Resharper, но есть одна вещь, с которой мне трудно пройти в ReSharper.
Механизм Live-шаблонов ReSharper, как ни крути, не имеет встроенных понятий для того, чтобы печатать так, как это делает CodeRush (по крайней мере, не так, как я могу сказать). Простой пример заключается в следующем. Для генерации следующего кода:
public String MyStringProperty { get; set; }
В CodeRush... я мог бы напечатать "as" ("a" для AutoProperty и "s" для строки), а затем просто изменить имя свойства.
В ReSharper мне нужно набрать "prop" (для свойства), затем задать тип и имя.
Похоже, что в живых шаблонах ReSharper нет аналогичных понятий для распознавания типов или ярлыков типов. Таким образом, похоже, что нет ничего похожего на многочисленные двух- и трехсимвольные шаблоны, чтобы получить предварительно введенные переменные, свойства, методы и т. Д.
Итак, наконец вопрос после всего этого фона. Есть ли способ воспроизвести это понятие "типизированные шаблоны" в ReSharper, не создавая новый живой шаблон для каждой комбинации шаблон / тип?
2 ответа
В настоящее время ReSharper не поддерживает шаблон использования, на который вы ссылаетесь. Однако есть два варианта, которые я могу придумать, чтобы сделать это возможным.
- Одним из вариантов является создание живых шаблонов для всех распространенных случаев использования. Я использую этот файл, но учтите, что он не был протестирован с R#6.1.
- Другим вариантом будет просто написать плагин для этого. В ReSharper SDK есть пример HtmlZen, который делает нечто очень похожее, то есть расширяет строку DSL в кусок кода. Вы можете легко сделать то же самое для мнемонического расширения.
Обратите внимание, что какой бы вариант вы ни выбрали, вы не сможете расширять шаблоны, нажимая пробел - это просто невозможно в ReSharper прямо сейчас.
Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы.
Дмитрий
Я не думаю, что можно заставить Resharper иметь шаблон, который принимает имя из одной буквы, за которым следует тип из одной буквы. Вам нужно будет создать новый шаблон для каждого типа, например, "как" и определить его как:
public string $NAME$ { get; set; }
Вы можете изменить место, где оно доступно, то есть файлы C#, где разрешено объявление члена типа.
Вы можете переименовать шаблон prop в "a", а затем набрать: "a", TAB, "s", TAB, TAB, "property_name", TAB