自动生成变量* name *以匹配您提供的参数?

时间:2010-08-18 15:11:16

标签: c# visual-studio parameters code-generation resharper

R#4.5(欢迎回答5)
VS2008(欢迎回答VS2010)
C#(FWIW)

我正在使用构造函数(问题也适用于方法),而且还有Intellisense:

Foo Constructor Intellisense, showing the parameter variable names

我还没有为第一个参数“firstName”指定值。今天,我键入“firstName”,然后让IDE为我创建该变量(我将其初始化为某个值)。

我知道IDE会为我创建变量。我想让它为我创建变量名

我不想输入“firstName”。我喜欢参数作者选择的变量名,我想在我的(调用)代码中使用该变量名。

有没有办法让这个可接受的变量名称为我(调用代码)自动重新生成,当我按参数移动时,通过这行(调用)代码?

5 个答案:

答案 0 :(得分:2)

您可能会接近VS2010所需的内容。

  • 输入p.Foo(

这将打开所有构造函数列表中当前所选构造函数的描述。如果你输入一个字母,或点击ctrl + space,智能感知自动完成将会打开。

VS2008和VS2010之间的区别在于命名参数。在VS2010中,您的完成列表将包含指定参数firstName:lastName:的条目。

  • 键入参数名称的第一个字母(您所指的“参数作者选择的变量名称”)

Intellisense应直接跳转到该条目,并允许您按照通常的方式完成。

  • 键入空格,输入或逗号

Intellisense它将插入用于命名参数的标识符。它不会插入冒号(除非您键入它),因此您不必使用命名参数功能来完成您的目标。您可以利用您正在寻找的文本位于完成列表中的事实。

如何让Visual Studio实际生成局部变量(根据你的问题,似乎你已经解决了)让我感到困惑,并且由你来照顾:)如果你有第二个问题舔了,我也想知道怎么做。

答案 1 :(得分:0)

您可以创建一个代码片段来创建变量并将其作为参数插入。

MSDN Reference on snippets

答案 2 :(得分:0)

我完全不了解您的场景,但我假设您要将调用程序集中的变量名称注入到被调用的代码中。如果是这样,您可能需要查看 System.CodeDom ,它允许您在运行时创建类及其成员,并提供其提供的众多其他功能。

答案 3 :(得分:0)

我很确定你可以使用Resharper或CodeRush / Refactor来实现它。

答案 4 :(得分:0)

听起来我觉得你要做的就是完全不打字!让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