Ich benutze CQRS mit Event Sourcing und ich versuche, das Zustandsmuster mit meinem aggregierten Stamm zu verwenden.Zustandsmuster mit CQRS und Ereignis-Sourcing
Ich habe derzeit ein Produkt-Domain-Modell mit ein paar Methoden namens Create() und CreateSubscription wie unten.
public static void Create(string name){
When(new ProductCreatedEvent { Name = name});
}
public void CreateSubscription(string name){
if(_productState.CanCreateSubscription()){
When(new SubscriptionCreatedEvent { Name = name});
}
}
Dann habe ich die privaten Methoden, die tatsächlich die Werte wie folgt setzt.
private void OnCreated(ProductCreatedEvent e){
_name = e.Name;
}
private void OnSubscriptionCreated(SubscriptionCreatedEvent e){
_subscriptions.Add(Subscription.Create(e.Name));
}
Wenn ich den Zustand Muster verwendet haben, bevor die Logik DDD wurde in die Zustandsklasse bewegt, sondern weil ich Ereignis Sourcing verwende ich brauche die Wenn-Methode aufrufen, die in einer Basisklasse ist, die ruft dann meine private 'On' Methoden, die die Werte tatsächlich setzen.
Ich frage mich, wie ich diese Logik in meine State-Klasse umwandeln kann, sonst hat meine State-Class momentan nur 'Can'-Methoden und nicht den eigentlichen Implementierungscode.
Was ist das 'When' Schlüsselwort? Ist es neu in der neuesten C# Version. 6.0? – niksofteng
Wann ist eine Methode auf meiner Basisklasse – user1180223
Ich weiß, dass Sie sarkastisch sind, aber ich mag es sehr. Es liest sich auch als ein Satz mit dem Typ des übergebenen Objekts 'Wenn ein neues Produkt erstellt wurde' – user1180223