Автоматически сгенерировать переменную * name * для соответствия параметру Предоставляете?

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

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

Foo Constructor Intellisense, showing the parameter variable names

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

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

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

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

9
задан lance 18 August 2010 в 15:11
поделиться

5 ответов

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

  • Введите p.Foo(

Это откроет описание текущего выбранного конструктора из списка всех конструкторов. Если вы наберете букву или нажмете ctrl + пробел, откроется автодополнение intellisense

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

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

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

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

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

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

2
ответ дан 5 December 2019 в 02:06
поделиться

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

MSDN Reference on snippets

0
ответ дан 5 December 2019 в 02:06
поделиться

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

0
ответ дан 5 December 2019 в 02:06
поделиться

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

0
ответ дан 5 December 2019 в 02:06
поделиться

Мне кажется, что вы пытаетесь вообще перестать печатать! Чтобы 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/

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

HTH

0
ответ дан 5 December 2019 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: