ReSharper 搜索并替换为模式

2023-12-27

我想使用 ReSharper 7.1 搜索/替换为模式来重构整个项目中的各个代码块。

代码块类似于以下简化示例:

someControl.StatusProgressBar.IsIndeterminate = false;
someControl.StatusProgressBar.Visibility = Visibility.Visible;
someControl.StatusProgressBar.Minimum = 0;
someControl.StatusProgressBar.Maximum = 100;
someControl.StatusProgressBar.Value = percentage;

我想将它们更改为:

someControl.StatusProgressBar.Use(p =>
{
  p.IsIndeterminate = false;
  p.Visibility = Visibility.Visible;
  p.Minimum = 0;
  p.Maximum = 100;
  p.Value = percentage;
});

“使用”是一种扩展方法

如果所有代码块都设置相同数量的属性,那么这很容易。以下搜索和替换模式将完成这项工作:

SEARCH

$someControl$.$SomeProperty$.$SubProperty1$ = $val1$;
$someControl$.$SomeProperty$.$SubProperty2$ = $val2$;
$someControl$.$SomeProperty$.$SubProperty3$ = $val3$;
$someControl$.$SomeProperty$.$SubProperty4$ = $val4$;
$someControl$.$SomeProperty$.$SubProperty5$ = $val5$;

REPLACE

$someControl$.$SomeProperty$.Use(p=>
{
    p.$SubProperty1$ = $val1$;
    p.$SubProperty2$ = $val2$;
    p.$SubProperty3$ = $val3$;
    p.$SubProperty4$ = $val4$;
    p.$SubProperty5$ = $val5$;
});

但是,如果我还有一个代码块,例如:

someControl.StatusProgressBar.IsIndeterminate = false;
someControl.StatusProgressBar.Visibility = Visibility.Visible;
someControl.StatusProgressBar.Minimum = 0;
someControl.StatusProgressBar.Maximum = 100;
someControl.StatusProgressBar.Value = percentage;
someControl.StatusProgressBar.Orientation = Vertical;

使用 ReSharper 是否可以捕获并用一种模式替换两个代码块?后者具有一项额外的属性设置,但很容易多于一项或更少。

我认为这是不可能的。它需要能够创建某种变量模式,但我看不到一种方法来做到这一点,无论是使用正则表达式还是其他方式。

有任何想法吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReSharper 搜索并替换为模式 的相关文章

随机推荐