Questo non è un problema che sto avendo nel mio dominio problematico. È solo un esercizio di pensiero.
Dire che ho una calcolatrice semplice come questa:
public class Calculator
{
public IEnumerable<KeyValuePair<int, int>> CalculateDenominationsFor(int cost)
{
var target = cost;
foreach (var denomination in currency.AvailableDenominations.OrderByDescending(a => a))
{
var numberRequired = target / denomination;
if (numberRequired > 0)
{
yield return new KeyValuePair<int, int>(denomination, numberRequired);
}
target = target - (numberRequired * denomination);
}
}
}
Allo stato attuale non vi è alcuna Entità e nessuna radice Aggrega.
Credo di avere due opzioni:
-
Nessuna radice aggregata: chiedere al servizio dell'applicazione di chiamare direttamente il servizio di dominio, cioè fornire un costo e ricevere le denominazioni.
-
Introduci una radice aggregata: crea una classe chiamata
ChangeRequest
come la seguente:public class ChangeRequest { public decimal Cost {get; set;} public listKeyValuePair<int, int> denominations {get; set;} public IEnumerable<KeyValuePair<int, int>> AddDenominations(Calculator calculator) { //Add denominations to list here. } }
È normale avere un aggregato senza una radice aggregata?