我有大量的重複代碼,我希望在舊版代碼庫中進行替換,並發現Resharper的Structural Search and Replace feature可以很好地匹配任務。不過,我有問題使它符合我的模式。Resharper結構查找和替換
我希望有快速修復的模式是:
public string PropertyName
{
get { return base.GetSubNode(_parameterNode, "ElementName").InnerText; }
set { base.GetSubNode(_parameterNode, "ElementName").InnerText = value; }
}
這是要替換爲:
public string PropertyName
{
get { return GetProperty("ElementName"); }
set { SetProperty("ElementName", value); }
}
我創建了一個模式:
public string $propName$
{
get { return base.GetSubNode(_parameterNode, $elementName$).InnerText; }
set { base.GetSubNode(_parameterNode, $elementName$).InnerText = value; }
}
模式匹配如果我做了搜索,但不會導致快速修復可用。如果我爲getter和setter創建一個單獨的模式,我會得到快速修復,但getter模式與getter和setter都匹配。
吸氣模式:
base.GetSubNode(_parameterNode, $elementName$).InnerText
如何,我可以得到快速修復此getter/setter方法對?
看來,結構搜索和替換[只支持身體級別替換](http://devnet.jetbrains.net/message/5298817#5298817)。這將解釋爲什麼完整的Property模式不會導致快速修復。我仍然想要一種方法將快速修復應用到getter和setter中。 – PHeiberg 2012-01-12 11:50:48
VS查找和替換可能就足夠了,並明智地使用它的正則表達式支持。 – AakashM 2012-01-12 12:04:01
@AakashM - 的確如此,但我寧願一次更換一塊巨大的代碼庫,因爲最好缺少測試,而且快速修復會讓它變得非常容易。這也是我們學習如何利用結構查找和替換功能的好機會。 – PHeiberg 2012-01-12 12:12:04