Вызов метода форматирования в C # ReSharper - PullRequest
0 голосов
/ 24 ноября 2018

Я хочу отформатировать вызовы методов со сложными параметрами (вложенными «новыми» и / или вложенными лямбда-выражениями) таким образом, чтобы конечные символы «)» или } и ) были в одной строке.

Рассмотрим следующий код (вложенный «новый» регистр):

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 # enter image description here enter image description here Учитывая два приведенных выше примера, я получаю следующее, что нормально, я могупросто добавьте разрыв строки после последнего параметра следующим образом:

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
    )
);
...