c# - 使用对象初始化器时修复缩进

是否有一个工具可以自动缩进使用 object initializers 的代码?以下列方式:

SomeType someType = new SomeType
{
    Prop1 = "prop 1 value",
    Prop2 = "prop 2 value",
    Things = new List<Thing>
    {
        new Thing
        {
            ThingProp = "thing prop value"
        }
    }
};

即使用与其他 C# 代码中常见的相同的大括号缩进规则。

ReSharper 喜欢更重地缩进,但如果以后代码更改,则不会保持这种意图(我们已关闭各种 ReSharper 选项以防止这种情况发生)。

标准的 Visual Studio 2008 格式化选项 (Ctrl-K-D) 不会更改对象初始值设定项的缩进。

类定义包含在下面

public class Thing
{
    public string ThingProp { get; set; }
}

public class SomeType
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
    public List<Thing> Things { get; set; }
}

最佳答案

进入 ReSharper/Options/Languages/C#/Formatting Style/Other 并取消选中“Indent array, object and collection initializer block”(靠近底部)。

(数组、集合和对象初始化器有几个不同的选项,但它们分散在不同的部分。据我所知,预览不会采用您拥有的其他选项选择考虑,这无济于事...)

如果你让 ReSharper 使用 Ctrl-E Ctrl-C 重新格式化代码,你可以得到它完全按照您的帖子格式化代码。要使嵌入的列表项完全展开,您需要取消选中 Line Breaks and Wrapping 中的“将简单的数组、对象和集合放在单行上”——这可能不是您在其他地方想要的。 :(

https://stackoverflow.com/questions/1624301/

相关文章:

html - 格式丰富的内容用什么标记语言?

r - 通过带有条件格式的 xlsx 将数据框导出到 Excel

c++ - 使用 Visual Studio 进行高级 (C++) 源代码重新格式化?

xcode4 - XCode 4 注释格式(换行)

c++ - 对于 GCC <5,是否有 std::put_time 的内置替代方案?

string - 固定宽度数字格式化python 3

python - 如何在 Python 格式说明符中使用变量名

arrays - 填充表格数据的打印输出

url - 查询字符串中是否有任何格式约定?

r - 如何在 R Shiny 中对数据帧进行条件格式设置?