2013-03-27 29 views
3

我剛剛爲我的應用程序實現了一個自定義MessageBox。我現在想用我的自定義實現(即MsgBox.Show()**)替換對MessageBox.Show()的任何調用。我意識到我可以用一個簡單的全局查找&替換,但我想知道是否有更安全/更好的方法來使用ReSharper?ReSharper中是否有查找和替換功能?

**所有傳入的參數在兩種情況下都是相同的。

回答

6

ReSharper中有一個名爲Structural search and replace的工具。使用絕對比使用簡單的Find更安全,但它稍微複雜一些。我試圖給你做一個指導,但我沒有測試它。嘗試一下你自己的風險。在Google搜索ReSharper structural search and replace以查找更多信息。

  1. 轉到ReSharper | Find | Search with pattern
  2. 在文本字段中輸入$t$.Show($args$)
  3. 點擊Add Placeholder -> Expression。輸入t作爲名稱,然後輸入MessageBox作爲表達式類型,並從建議列表中選擇正確的類型。
  4. 點擊Add Placeholder -> Argument。輸入args作爲名稱,使用默認值保留其他字段。
  5. 確保該模式通過點擊Find找到您的目標電話。
  6. 現在回到ReSharper | Find | Search with pattern(你的模式應該仍然存在)。
  7. 點擊Replace
  8. 類型MsgBox.Show($args$)
  9. 點擊Replace
  10. 現在可以在必要時正確使用。不幸的是,這隻能通過ReSharper的解決方案範圍分析或通過編譯項目,然後在任何錯誤上單擊Alt-Enter來調用ReSharper的修補程序以添加使用來發現錯誤,從而半自動地完成。
+0

不幸的是我已經做到了這種老式的方式,所以我也無法真正地測試這個。如果有人想測試這個,它的工作原理,請在這裏更新,我會給予正確的答案。 – DaveDev 2013-03-27 11:40:36

+0

這款工具在類型匹配方面確實很麻煩。它靜靜地拋棄了諸如「靜態」或「只讀」之類的東西。它並不真正支持泛型。我真的不推薦它。 – julkiewicz 2017-06-10 23:19:28