Исправление отступов при использовании инициализаторов объектов
Есть ли инструмент, который будет автоматически отступать код, который использует инициализаторы объектов следующим образом:
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; }
}
Ответы
Ответ 1
Перейдите в ReSharper/Опции/Языки/С#/Стиль форматирования/Другие и снимите флажок "Исходный массив, объект и блок инициализации коллекции" (внизу).
(Существует несколько различных вариантов действий с массивами, инициализаторами коллекции и объектов, но они разбросаны по разным разделам. Насколько я могу судить, предварительный просмотр не принимает другие параметры, которые у вас есть выбранный во внимание, что не помогает...)
Если вы получите ReSharper для форматирования кода с помощью Ctrl - E Ctrl - C, вы можете получить его для форматирования кода точно в соответствии с вашим сообщением. Чтобы сделать элемент встроенного списка полностью развернутым, вам нужно отключить "Разместить простой массив, объект и коллекцию в одной строке" в разделе "Разрывы строк и обтекание", хотя это может быть и не так, как вы хотите.: (