我有很多像这样的代码:
ml = this.CriteriaList.ItemByName(SC_STATIONS) as MultiList;
我想用
替换它ml = (MultiList) this.CriteriaList.ItemByName(SC_STATIONS);
为此,我进入了Resharper选项,选择了自定义模式并创建了一个具有以下搜索模式的新模式:
`$expr1$ as $type1$;`
expr1
表示表达式,type1
表示类型。替换模式为($type1$) $expr1$;
。
问题是Resharper从未发现任何与此自定义模式匹配的内容 我在这里缺少什么?
答案 0 :(得分:1)
虽然不在ReSharper上,但仍可以使用。
打开Visual Studio替换窗口(CTRL + H),打开使用正则表达式选项并使用以下术语:
(.*)(\s|\((?!\))|\=)(.+) as (\w+)(\).*|;)
$1$2($4)$3$5
注意:如果您使用的是VS2010,则应使用{}
代替()
和\
代替$
。去图......
答案 1 :(得分:1)
这个Resharper Custom Pattern似乎可以做你想要的:
我用来测试这种模式的小程序是:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var b = FooFactory() as bar;
}
static private foo FooFactory()
{
return new foo();
}
}
class foo {}
class bar : foo {}
}
它应该在FooFactory() as bar
下放置一条摆动线,为您提供用(bar)FooFactory()
替换它的选项
在此自定义模式上添加var ml = CriteriaList.ItemByName(SC_STATIONS) as MultiList;
并执行“立即搜索”,即可获得此信息: