关于c#:Fluent API和方法链接样式的用法

Fluent API and Method-Chaining Style Usage

在使用流利的API进行编程或仅使用方法链接时,我看到的样式大多是这样的:

1
2
3
4
var obj = objectFactory.CreateObject()
    .SetObjectParameter(paramName, value)
    .SetObjectParameter(paramName, value)
    .DoSomeTransformation();

将点放在行首而不是行尾的原因是什么:

1
2
3
4
var obj = objectFactory.CreateObject().
    SetObjectParameter(paramName, value).
    SetObjectParameter(paramName, value).
    DoSomeTransformation();

或者,团队达成共识仅仅是一种时尚吗?


这只是一种时尚。

放置的优势。该行的开头是一眼便清楚了这不是一个独立的方法调用。

例如,如果您这样做:

1
2
var obj = objectFactory.CreateObject()
    .SetObjectParameter(paramName, value)

您可以说SetObjectParameter(...)是在其他对象上调用的一种方法,仅查看该行。这样做:

1
2
var obj = objectFactory.CreateObject().
    SetObjectParameter(paramName, value)

要求您查看上一行来说明。例如,这可能是格式问题,即:

1
2
var obj = objectFactory.CreateObject();
    SetObjectParameter(paramName, value);

(这里,SetObjectParameter将是当前类型上的方法,而不是CreateObject()返回的类型上的方法-但是,通过查看第二行,如果没有。开头,这是不明显的)。铅>


我能想到的三个原因:

  • 更明显的是,每个语句都是前一个语句的延续。
  • 我发现Visual Studio的智能感知更喜欢这种方式。
  • 至少在我看来,它在眼睛上更容易。