Supponi una radice aggregata: MailConfiguration (avvolgendo un oggetto AddressPart). L'oggetto AddressPart è un oggetto valore immutabile semplice con alcuni campi come senderAdress, recipedAddress (per rendere semplice l'esempio).
Essendo un oggetto invariante, AddressPart dovrebbe avvolgere logicamente il proprio Validatore (a titolo di external un tipo di AddressValidator per il rispetto del Principio di Responsabilità Unica)
Ho letto alcuni articoli che sostenevano che un aggregatoRoot doveva convalidare i suoi "figli". Tuttavia, se seguiamo questo principio, si potrebbe creare un AddressPart con uno stato non valido / non valido.
Qual è la tua opinione? Devo spostare il collaboratore AddressValidator (utilizzato nel costruttore in modo da convalidare immediatamente la coesione di un AddressPart) da AddressPart e assegnarlo a aggregateRoot (MailConfiguration)?