簡體   English   中英

如何創建一個自定義模式,以在Resharper中用直接投射替換`as`投射?

[英]How to create a custom pattern to replace `as` cast with direct cast in Resharper?

我有很多這樣的代碼:

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

我想換成

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

為此,我進入了“ Resharper選項”,選擇了“自定義模式”,並創建了一個新的具有以下內容的搜索模式:

`$expr1$ as $type1$;`

其中expr1表示表達式, type1表示類型。 替換模式為($type1$) $expr1$;

問題在於Resharper永遠找不到與該自定義模式匹配的內容。
我在這里想念什么?

盡管沒有在ReSharper上運行,但這將起作用。

打開“ Visual Studio替換”窗口(CTRL + H),打開“ 使用正則表達式”選項並使用以下術語:

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

注意 :如果您使用的是VS2010,則應使用{}代替()並使用\\代替$ 去搞清楚...

此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下放置一條FooFactory() as barFooFactory() as bar為您提供將其替換為(bar)FooFactory()

var ml = CriteriaList.ItemByName(SC_STATIONS) as MultiList; 然后在此自定義模式上執行“立即搜索”,就會得到以下結果:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM