Автоматически сгенерировать переменную * name * для соответствия параметру, который вы предоставляете? - PullRequest
9 голосов
/ 18 августа 2010

R # 4.5 (ответы на 5 приветствуются)
VS2008 (ответы на VS2010 приветствуются)
C # (FWIW)

Я использую конструктор (вопрос относится к методам,тоже), и есть Intellisense:

Foo Constructor Intellisense, showing the parameter variable names

У меня пока нет значения, чтобы указать для этого первого параметра, "firstName".Сегодня я набираю «firstName» , затем позвольте IDE создать для меня эту переменную (которую я инициализирую некоторым значением).

Я понимаю, что в IDE будет создана переменная для меня.Я хочу, чтобы он создал для меня имя переменной .

Мне не нужно вводить "firstName".Мне нравится имя переменной, которую выбрал автор параметра, и я хочу использовать это имя переменной в своем (вызывающем) коде.

Есть ли способ перегенерировать эти приемлемые переменные names для меня (вызывающего кода) автоматически, когда я перемещаюсь, параметр за параметром, через эту строку (вызывающего) кода?

Ответы [ 5 ]

2 голосов
/ 26 августа 2010

С VS2010 вы можете приблизиться к тому, что ищете.

  • Тип p.Foo(

Откроется описание выбранного в данный момент конструктора из списка всех конструкторов. Если вы наберете букву или нажмете Ctrl + Пробел, откроется автозаполнение intellisense.

Разница между VS2008 и VS2010 называется параметрами. В VS2010 ваш список завершения будет содержать записи для именованных параметров firstName: и lastName:.

  • Введите первую букву имени параметра (что вы называете «именем переменной, выбранной автором параметра»)

Intellisense должен перейти прямо к этой записи и позволить вам выполнять завершение так же, как обычно.

  • Введите пробел, введите или запятую

Intellisense вставит идентификатор, используемый для именованного параметра. Он не будет вставлять двоеточие (если вы его не введете), поэтому вам не нужно использовать функцию именованных параметров для достижения цели. Вы можете просто воспользоваться тем, что искомый текст находится в вашем списке завершения.

Как вы заставляете Visual Studio фактически генерировать локальные переменные (что, согласно вашему вопросу, кажется, что вы уже решили) сбивает с толку меня, и вам придется позаботиться об этом :) Если вы получили эта вторая проблема подошла, я тоже хотел бы знать как.

0 голосов
/ 25 августа 2010

Мне кажется, что ты пытаешься вообще печатать!Чтобы IDE вставил код в ваши намерения, чтобы вам не пришлось этого делать.Довольно высокая цель - за исключением того, что вы бы оставили нас всех без работы; - (

Помимо всего прочего, вы, вероятно, добьетесь того, чтобы воспользоваться инструментом генерации кода, таким как T4 Toolbox (одиниз моих новых любимых игрушек.) Если вы ищете инструмент, который будет автоматически генерировать ваши фрагменты кода при вводе, это высокий заказ. Ближайшая доступная вещь будет Resharper.

Вот примерконструктора класса, который я сгенерировал из своей настройки шаблонов T4 Toolbox:

 public partial class EvaluationController : SmartController
    { 
        private readonly IEvaluationService _evaluationSvc;
        private readonly IEvaluationMapper _evaluationMapper;
        private readonly IEvaluationCriterionMapper _evaluationCriterionMapper;
        private readonly IParticipantEvaluationMapper _participantEvaluationMapper;

        public EvaluationController( IEvaluationRepository repository, IEvaluationService evaluationSvc, IEvaluationMapper evaluationMapper, IEvaluationCriterionMapper evaluationCriterion, IParticipantEvaluationMapper participantEvaluation)
        {//     : base(repository, evaluationMapper)
              _evaluationSvc =  evaluationSvc;
              _evaluationMapper = evaluationMapper;
             _evaluationCriterionMapper = evaluationCriterion;
             _participantEvaluationMapper = participantEvaluation;
        }

Если это то, что вам нужно, место для начала будет: http://t4toolbox.codeplex.com/

I 'У меня есть пример проекта, в котором я использую настройки шаблонов для ускорения своих бизнес-классов, различных методов и уровня хранилища. http://t4tarantino.codeplex.com/ Есть пример уровня сложности вывода, который вы можете сгенерировать на http://geekswithblogs.net/JamesFleming/archive/2010/08/18/code-generation-with-t4-toolbox.aspx

HTH

0 голосов
/ 23 августа 2010

Я не совсем понимаю ваш сценарий, но я предполагаю, что вы хотите внедрить имя переменной из вызывающей сборки в вызываемый код.если это так, вы можете захотеть взглянуть на System.CodeDom , который позволяет создавать класс и его члены во время выполнения помимо множества других функций, которые он предлагает.

0 голосов
/ 23 августа 2010

Я уверен, что вы можете сделать это с помощью Resharper или CodeRush / Refactor.

0 голосов
/ 22 августа 2010

Можно создать фрагмент кода, который создает переменную и вставляет ее в качестве параметров.

Ссылка MSDN на фрагменты

...