方法链没有括号,怎么样?

时间:2013-11-27 12:37:33

标签: c# class object methods chain

我想做一个方法链,例如:

Car myCar = new Car();

// Chaining
myCar.config.engine.cylinders("4");

但是如何在不使用“config”或“engine”中的括号的情况下进行链接?

我只能这样做:

myCar.config().engine().cylinders("4");

2 个答案:

答案 0 :(得分:4)

您可以在Config课程中声明Car属性来执行此操作。然后是Engine类中的CarConfig属性,如下所示:

public class Car
{
    public CarConfig Config { get; set; }
}

然后你可以链接电话。

答案 1 :(得分:0)

你可以使用许多建议的属性,但这整个事情很难打破 Law of Demeter (或最少知识原则)。基本上你打破了Car类的封装。您可能需要查看 Builder Pattern ,尤其是流畅的实施(例如 here )。

您的代码可能看起来像

Car myCar = new CarBuilder().WithEngineCylinders("4");