我有以下类,它在构造函数中有太多参数,我想重构该类只接收一个封装所有参数的对象。
public class MyClass
{
public MyClass(
string param1,
string param2,
string param3,
string param4,
string param5)
{
...
}
}
是否可以使用Visual Studio重构实用程序将所有构造函数参数封装在新类中?
public class MyClass
{
public MyClass(MyClassParameters parameters)
{
...
}
}
public class MyClassParameters
{
public string Param1 { get; set; }
public string Param2 { get; set; }
public string Param3 { get; set; }
public string Param4 { get; set; }
public string Param5 { get; set; }
}
所以我的问题是
MyClass
的引用吗? 这是一项艰苦的工作,因为我的单元测试套件中有数以千计的对此类的引用。
答案 0 :(得分:4)
内置的C# refactoring选项不包含"introduce parameter object"重构。
Resharper和Refactor Pro(都是商业广告)确实拥有它。
答案 1 :(得分:3)
你有 ReSharper 吗? 使用ReSharper,您可以在构造函数上设置光标,按 Ctrl + R , Ctrl + R 并选择 从参数中提取类。 .. 强>
答案 2 :(得分:0)
如果已经在整个地方使用该类,那么您可以做的就是创建另一个构造函数,获取MyParameter参数,复制旧功能(将每个参数的引用更新为MyParameter属性/字段),以及只需要阅读旧构造函数:
public MyClass(
string param1,
string param2,
string param3,
string param4,
string param5) : this(new MyParameter(param1, param2...))
{
}
不是最漂亮的解决方案,但正如Oded所提到的,没有“内置”方法来重构构造函数参数。