1

我有很多这样的代码:

ml = this.CriteriaList.ItemByName(SC_STATIONS) as MultiList;

我想用

ml = (MultiList) this.CriteriaList.ItemByName(SC_STATIONS);

为此,我进入了 Resharper 选项,选择了自定义模式并创建了一个具有以下搜索模式的新模式:

`$expr1$ as $type1$;`

with expr1meaning 的表达和type1意义类型。替换模式是($type1$) $expr1$;

问题是 Resharper 从来没有找到任何匹配这个自定义模式的东西。
我在这里想念什么?

4

2 回答 2

1

这将起作用,尽管它不在 ReSharper 上。

打开 Visual Studio 替换窗口 (CTRL + H),打开使用正则表达式选项并使用以下术语:

  • 寻找:(.*)(\s|\((?!\))|\=)(.+) as (\w+)(\).*|;)
  • 代替:$1$2($4)$3$5

注意:如果你使用的是 VS2010,你应该使用{}代替()\代替$. 去搞清楚...

于 2013-05-10T17:40:40.680 回答
1

这个 Resharper 自定义模式似乎可以满足您的需求:

在此处输入图像描述

我用来测试这种模式的小程序是:

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;并执行“立即搜索”给了我这个:

在此处输入图像描述

于 2013-05-10T18:09:16.180 回答