重构方法签名以获取对象而不是其一个或多个属性

时间:2016-06-29 15:45:56

标签: c# refactoring resharper

我有一个从对象获取多个属性的方法,我想安全地重构它以简单地获取整个对象。

我想改变:

var control = new Control
{
    Prop1 = 1,
    Prop2 = 2
};
TheMethod(control.Prop1, control.Prop2, "foo");

分为:

var control = new Control
{
    Prop1 = 1,
    Prop2 = 2
};
TheMethod(control, "foo");

我找不到可以提供帮助的ReSharper重构。是否有一系列我可以执行的步骤可以安全地进行重构?

2 个答案:

答案 0 :(得分:1)

您可以使用ReSharper Change Signature重构来根据需要更改方法的签名。您可以为新引入的参数(类型Control)指定默认值。如果这不能处理您的所有情况,您可以使用Structural Search and Replace替换方法的参数。

答案 1 :(得分:-1)

替换Prop1和Prop2的方法参数以传递控件类型如下所示:

    TheMethod(Control control, string value)
    {
    }