You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ReSharper将参数转换为Object Initializer

将长方法参数转换为对象初始化器的实现方案

1. 先定义对应的实体类

首先创建包含对应公共属性的TestClass,默认无参构造函数会自动生成,无需额外定义:

public class TestClass
{
    public string A1 { get; set; }
    public string A2 { get; set; }
    public string A3 { get; set; }
    public string A4 { get; set; }
    public string A5 { get; set; }
}

2. 调整重构工具设置(以ReSharper/Rider为例)

默认使用「Transform Parameters」重构时,工具会生成带参数的构造函数,修改设置可直接生成对象初始化器形式:

  • 打开设置(快捷键Ctrl+Alt+S)
  • 导航到Editor → Code Style → C# → Code Generation
  • 在「Generate from parameters」相关选项中,选择生成公共属性而非带参构造函数
  • 再次执行「Transform Parameters」重构,工具会自动生成对象初始化器的调用方式

3. 手动重构步骤(临时需求适用)

如果不想修改全局设置,可手动调整:

  1. 选中GetTest方法的参数列表,右键选择Refactor → Transform Parameters
  2. 在弹窗中创建新类TestClass,此时工具会生成带参构造的版本
  3. 删除TestClass的带参构造,添加对应的公共属性
  4. 将Example方法中的构造函数调用修改为对象初始化器形式

最终完整代码

namespace Test.Test
{
    public class TestClass
    {
        public string A1 { get; set; }
        public string A2 { get; set; }
        public string A3 { get; set; }
        public string A4 { get; set; }
        public string A5 { get; set; }
    }

    public class TestUtility
    {
        public void Example()
        {
            this.GetTest(new TestClass
            {
                A1 = "a1",
                A2 = "a2",
                A3 = "a3",
                A4 = "a4",
                A5 = "a5"
            });
        }

        public void GetTest(TestClass testClass)
        {
            Console.WriteLine($"{testClass.A1}\t{testClass.A2}\t{testClass.A3}\t{testClass.A4}\t{testClass.A5}");
        }
    }
}

内容的提问来源于stack exchange,提问作者ericping

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:45:34