使用对象初始值设定项时修复缩进

时间:2009-10-26 11:29:59

标签: c# coding-style formatting

是否有一种工具会以下列方式自动缩进使用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; }
}

1 个答案:

答案 0 :(得分:16)

进入ReSharper / Options / Languages / C#/格式化样式/其他并取消选中“缩进数组,对象和集合初始化程序块”(靠近底部)。

(有几个不同的选项可以处理数组,集合和对象初始化器,但它们分散在不同的部分。据我所知,预览不会采取你有的其他选项选择考虑,这没有帮助...)

如果让ReSharper使用 Ctrl - E Ctrl - C 重新格式化代码,你可以得到它根据您的帖子完全格式化代码。要使嵌入式列表项完全展开,您需要在“换行符”和“换行”中取消“在单行放置简单数组,对象和集合”,这可能不是您想要的其他内容。 :(