Подтвердить что ты не робот

Исправление отступов при использовании инициализаторов объектов

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

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

то есть. используя те же правила отступов, что и в другом коде С#.

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; }
}
4b9b3361

Ответ 1

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

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

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