我想做一个方法链,例如:
Car myCar = new Car();
// Chaining
myCar.config.engine.cylinders("4");
但是如何在不使用“config”或“engine”中的括号的情况下进行链接?
我只能这样做:
myCar.config().engine().cylinders("4");
答案 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");