如何自定义 "Encapsulate Field" 生成的代码格式?

How to customize formatting of code that is generated by "Encapsulate Field"?

以前我相当确定 "Encapsulate Field" 命令会变成如下所示:

public int SomeNumber;

进入以下内容(我想要来自VS 2015):

private int someNumber;

public int SomeNumber {
    get { return someNumber; }
    set { someNumber = value; }
}

但在 Visual Studio 2015 年,我看到了以下内容:

private int someNumber;

public int SomeNumber {
    get {
        return someNumber;
    }

    set {
        someNumber = value;
    }
}

有办法解决这个问题吗?

对你有帮助吗:
-封装字段重构(C#): https://msdn.microsoft.com/en-us/library/a5adyhe9.aspx

这个网站似乎在主题的结尾提供了一个解决方案。

还要检查这个 post: -字段封装的不同重构风格:如何让Visual Studio改变它? Different Refactoring style for field encapsulation: how to make Visual Studio change it?

这个问题在某种程度上与你的问题相对应:这个问题确实与你的问题相关:)

这是 VS2015 中的设计更改。在以前的版本中,重构命令注意工具 > 选项 > 文本编辑器 > C# > Wrapping > "Leave block on single line" 选项。打开它后,您将获得 属性 getter 和 setter 正文,其编码方式与片段中的编码方式相同,大括号位于同一行。你喜欢的方式。

与VS2015不同,现在注意工具>选项>文本编辑器>C#>格式化>换行>"Place open brace on new line for methods"设置。您可以在 "egyptian" 大括号或分开左大括号之间进行选择。两者都不喜欢。

Microsoft 创建新的 VS 版本时会发生意外,这不是意外。这是否是由 "popular demand" 完成的很难进行逆向工程,我认为这很有可能,因为这种重构通常是为了编写一个非平凡的 getter 或 setter,赢得的那种'适合单行。让我们在所有三种可能的格式首选项之间进行选择对我来说似乎是个问题,现有的格式选项不太匹配。

唯一可行的选择是让 Microsoft 知道您对更改不满意。有 an existing UserVoice article 提议更改。你可以投票给它或写你自己的。 Post 在你的问题中给它 link 以便其他 SO 用户可以投票。

我自己已经尝试更改代码片段文件以适合我的文件,但 VS 没有生效。我最终做的是

  1. 照常封装字段。
  2. 将代码复制并粘贴到记事本++中,然后执行查找和替换。

查找:

(\{)*(\s*)*(get|set)\r\n\s+{\r\n\s+(.*)\r\n\s+\}\s+

替换为:

\{\}
  1. 将结果粘贴回 VS。 VS 将按照 "Leave block on single line".
  2. 对其进行格式化