我正在尝试使用复杂的参数(嵌套的“ 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#代码格式设置面板中的相关部分 鉴于以上两个示例,我得到以下结果,可以,我可以在最后一个参数之后添加一个换行符,如下所示:
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
)
);