Ich versuche gerade, meine erste DSL für ein einfaches Arbeitsgerät zu schreiben. Ich verwende das Builder-Pattern, um das komplexe übergeordnete Objekt einzurichten, stoße aber beim Aufbau der untergeordneten Sammlungen des übergeordneten Objekts auf Hindernisse. Hier ist ein Beispiel:
Verwendung:
var myMorningCoffee = Coffee.Make.WithCream().WithOuncesToServe(16);
Probe mit Verschluss (ich glaube, so nennt man sie):
var myMorningCoffee = Coffee.Make.WithCream().PourIn(
x => {
x.ShotOfExpresso.AtTemperature(100);
x.ShotOfExpresso.AtTemperature(100).OfPremiumType();
}
).WithOuncesToServe(16);
Beispielklasse (ohne die untergeordnete PourIn()-Methode, denn das ist es, was ich herauszufinden versuche).
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;
}
}
Also in meiner app für die Arbeit habe ich das komplexe Objekt Gebäude ganz gut, aber ich kann nicht für das Leben von mir herausfinden, wie man die Lambda für die Untersammlung auf das übergeordnete Objekt codiert. (in diesem Beispiel ist es die Aufnahmen (Kind-Sammlung) von expresso).
Vielleicht bringe ich hier etwas durcheinander, und es macht mir nichts aus, wenn man mich aufklärt; aber mir gefällt wirklich, wie sich das liest, und ich würde gerne herausfinden, wie man das zum Laufen bringt.
Danke! Sam