Исправление отступов при использовании инициализаторов объектов - PullRequest
12 голосов
/ 26 октября 2009

Существует ли инструмент, который автоматически вставляет код, который использует инициализаторы объекта следующим образом:

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 Ответ

16 голосов
/ 26 октября 2009

Перейдите в ReSharper / Параметры / Языки / C # / Стиль форматирования / Другое и снимите флажок «Отступный массив, объект и блок инициализатора коллекции» (внизу).

(Есть несколько различных вариантов работы с массивами, инициализаторами коллекций и объектов, но они разбросаны по разным разделам. Насколько я могу судить, предварительный просмотр не использует другие опции, которые у вас есть выбрано в учетную запись, что не помогает ...)

Если ReSharper переформатирует код с помощью Ctrl - E Ctrl - C , вы можете получить его для форматирования кода именно так, как на ваш пост. Чтобы полностью развернуть встроенный элемент списка, нужно снять флажок «Поместить простой массив, объект и коллекцию в одну строку» в разделах и переносах строк, хотя & mdash; это может быть не то, что вам нужно в других местах. (

...