簡體   English   中英

如何使用Resharper結構查找和替換將C#對象初始值設定項轉換為使用構造函數

[英]How to convert a C# object initializer to use a constructor using Resharper structural find and replace

我想使用Resharper結構搜索和替換模板來自動替換此示例:

new Fruit { Name = "Apple", IsTasty = true }

有了這個:

new Fruit("Apple", true)

(注意,所需的構造函數已存在)

我嘗試過這樣的各種組合:

new $type$ { Name = $name$, IsTasty = $isTasty$ };

...使用各種不同的占位符類型,但R#在我的代碼中找不到任何示例。 有沒有人這樣做過?

所以我只是在resharper中做到了這一點(我覺得9.0.2)

創建模式:FruityChange

  • new $ type $ {Name = $ param1 $,IsTasty = $ param2 $}
  • $ type $是一種類型
  • $ param1 $是string類型的表達式
  • $ param2 $是bool類型的表達式
  • 模式嚴重性“顯示為錯誤”

與類水果

public class Fruit
{
    public Fruit(string name, bool isTasty)
    {
        Name = name;
        IsTasty = isTasty;
    }

    public string Name { get; set; }
    public bool IsTasty { get; set; }
}

並強調了代碼編輯器中的表達式,alt-tab為我提供了“替換為”選項。 它至少適用於我的機器:-)

默認情況下,R#似乎將占位符視為標識符,並且模式匹配失敗。

雙擊右側的每個占位符,並將“標識符”更改為“表達式”。

在此輸入圖像描述

暫無
暫無

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

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