C#ReSharper格式化方法调用

时间:2018-11-23 21:09:28

标签: c# formatting resharper

我正在尝试使用复杂的参数(嵌套的“ new”和/或嵌套的lambda)格式化方法调用,以使最后的“)”或})位于同一行。

考虑以下代码(嵌套的“新”情况):

myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(parm1,
    parm2, parm3));

应格式化为:

myClass.MyMethod(new ThisIsAMuchLongerThanUsualClassName(
    parm1, 
    parm2, 
    parm3
));

同样,在处理嵌套的lambda时,请考虑以下因素:

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与所示示例完全无关。

共享我的方法调用设置可能会有所帮助。我认为我想要的东西是不可能的,所以现在我正在用最少的精力进行工作。这是R#的C#代码格式设置面板中的相关部分 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
    )
);

0 个答案:

没有答案