【问题标题】:List all method parameters automatically to pass them forward自动列出所有方法参数以将它们向前传递
【发布时间】:2015-09-27 11:54:39
【问题描述】:

正如代码所示,传递参数是一项相当频繁的任务。有没有办法使用 Resharper、Visual Studio 或其他附加组件自动生成列表 isPriority, label, id, start, user,而不是手动编写它们?

    public void TransformAndStore(
        bool isPriority,
        string label,
        string id,
        DateTimeOffset start,
        string user)
    {
        if (this.IsValid(id)) {
            label = this.Clean(label);
            this.Reposit(isPriority, label, id, start, user);
        }
    }

生成的列表应该基于方法签名,按照出现的顺序列出方法的所有参数,不包括它们的类型。

  • 此外,如果 Reposit 方法要使用调用方法范围内可用的部分但不是全部相同参数(由参数/变量名称标识),那么自动完成也会加快编码速度,并减少 RSI :)

【问题讨论】:

    标签: c# .net visual-studio autocomplete resharper


    【解决方案1】:

    您可以创建一个类来存储所有参数,这样您只需要传递一个项目。 Resharper 可以通过使用 Refactor -> Extract -> Extract class from parameters 自动为您执行此操作。

    此外,如果您总是重复相同的参数组,请考虑将作用于它们的方法也移动到类中。使用这些方法对数据进行逻辑分组可能是一种很好的做法。例如:

    public class CleverName
    {
        public bool IsPriority { get; set; }
        public string Label { get; set; }
        public string Id { get; set; }
        public DateTimeOffset Start { get; set; }
        public string User { get; set; }
    
        public bool IsValid()
        {
            //Check if Id is valid
        }
    
        public void TransformAndStore()
        {
            if (this.IsValid()) {
                Label = this.Clean(Label);
                this.Reposit();
            }
        }
    
        public void Reposit()
        {
        }
    }
    

    【讨论】:

    • 有趣的解决方法,但即使我只有 3 个参数,但我需要每年传递 10000 次,然后我想要一个自动完成,所以我希望找到一个自动完成解决方案。支持但不是我正在寻找的答案..
    • 您可以将这些方法放在同一个类中。这样一来,除了顶级调用之外,您根本不会传递参数。
    • 我明白了,谢谢。而且参数越多,链接越多,您的方法就越有意义,但我仍然在谈论许多不同的不相关方法的自动完成,其中几个参数可能只传递一次(无链接)。
    • 几乎可以肯定没有办法自动完成参数,但祝你好运:)
    【解决方案2】:

    虽然它不能回答您所问的确切问题,但请查看 ReSharper 的 Smart Completion。它将根据当前上下文过滤可用的完成项,并且通常非常擅长准确地建议要传递的正确参数。

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 2022-06-17
      • 2017-02-21
      • 2019-11-27
      • 2015-07-06
      相关资源
      最近更新 更多