Я хочу отформатировать вызовы методов со сложными параметрами (вложенными «новыми» и / или вложенными лямбда-выражениями) таким образом, чтобы конечные символы «)» или }
и )
были в одной строке.
Рассмотрим следующий код (вложенный «новый» регистр):
myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(parm1,
parm2, parm3));
Должен быть отформатирован в:
myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(
parm1,
parm2,
parm3
));
Аналогично, при работе с вложенной лямбдой учитывайте следующее:
Task.Run(() => { var result = myClass.DoStuff(); myResultCollector.Collect(result); });
Должен ли форматироваться так:
Task.Run(() =>
{
var result = myClass.DoStuff();
myResultCollector.Collect(result);
});
В обоих случаях я получу вместо этого:
myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(
parm1,
parm2,
parm3
)
);
Task.Run(() =>
{
var result = myClass.DoStuff();
myResultCollector.Collect(result);
}
);
Есть идеи?
РЕДАКТИРОВАТЬ: Исходный образец был отредактирован как многострочный, недостаточно длинный, чтобы вызывать правила прерывания, иронично, что ThisIsAMuchLongerThanUsualClassName
совершенно не имеет отношения к показанным примерам.
Это может помочь поделиться настройками вызова метода.Я думаю, что то, чего я хочу, просто невозможно, поэтому сейчас я работаю с тем, что требует наименьших усилий.Вот соответствующий раздел на панели настроек форматирования кода C # в R # Учитывая два приведенных выше примера, я получаю следующее, что нормально, я могупросто добавьте разрыв строки после последнего параметра следующим образом:
myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(parm1,
parm2,
parm3));
// if entered like this, it yields the desired format upon auto-formatting
myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(parm1, parm2, parm3
));
//yields
myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(parm1,
parm2,
parm3
));
Пока он не идеален, пока он работает.Я подозреваю, что основной причиной является Prefer wrap before ")" in invocation
, что по иронии судьбы является тем, что я хочу, но только один раз для наиболее выраженного выражения, а не для каждого подвыражения (такого как новый синтаксис в качестве аргумента).Включение этой опции превращает желаемый формат в:
myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(parm1,
parm2,
parm3
)
);