Da un lato, gli invarianti dovrebbero essere protetti (Per rendere gli stati non validi prima possibile e preferibilmente al momento della compilazione piuttosto che il tempo di esecuzione), e d'altro canto, passare la conoscenza del dominio fuori dal dominio è sbagliato.
Da un lato, gli oggetti valore proteggono i nostri invarianti di dominio al primo posto, d'altro canto utilizzandoli come comandi o dato che le proprietà equivalgono al passaggio della conoscenza del dominio intorno.
L'unica soluzione per proteggere entrambi gli invarianti ed evitare che la conoscenza del dominio elimini il limite del dominio (incapsulando il modello di dominio), sembra racchiudere gli aggregati in un mapper da comando a valore-oggetto .
Sto utilizzando CQRS insieme a ES.
Va bene avere un wrapper come command-to-value-object-mapper attorno alle mie radici aggregate? C'è qualche altra soluzione?