[英]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 bar
行FooFactory() as bar
為您提供將其替換為(bar)FooFactory()
將var ml = CriteriaList.ItemByName(SC_STATIONS) as MultiList;
然后在此自定義模式上執行“立即搜索”,就會得到以下結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.