我正在为一个简单的工作工具编写我的第一个 DSL。我正在使用构建器模式来设置复杂的父对象,但在构建父对象的子集合时遇到了砖墙。这是一个示例:
采用:
var myMorningCoffee = Coffee.Make.WithCream().WithOuncesToServe(16);
带闭包的样本(我认为这就是他们所说的):
var myMorningCoffee = Coffee.Make.WithCream().PourIn(
x => {
x.ShotOfExpresso.AtTemperature(100);
x.ShotOfExpresso.AtTemperature(100).OfPremiumType();
}
).WithOuncesToServe(16);
示例类(没有子 PourIn() 方法,因为这是我想要弄清楚的。)
public class Coffee
{
private bool _cream;
public Coffee Make { get new Coffee(); }
public Coffee WithCream()
{
_cream = true;
return this;
}
public Coffee WithOuncesToServe(int ounces)
{
_ounces = ounces;
return this;
}
}
因此,在我的工作应用程序中,我可以很好地构建复杂的对象,但我一生都无法弄清楚如何为父对象上的子集合获取 lambda 编码。(在这个例子中,它是 expresso 的镜头(子集合))。
也许我在这里混淆了概念,我不介意直截了当;但是,我真的很喜欢它的阅读方式,并想弄清楚如何让它发挥作用。
谢谢,山姆