Recentemente ho posto questa domanda: link . Ho intenzione di evitare un oggetto valore DateOfBirth
. Invece sto pensando di usare un alias di tipo. Ho alcune opzioni riguardo al mio costruttore:
Opzione 1
using DateOfBirth=System.DateTime;
DateOfBirth DateOfBirth;
public Person (DateOfBirth dateOfBirth)
{
if (dateOfBirth.TimeOfDay.TotalSeconds > 0)
throw new ArgumentException("Date of birth cannot contain a time.")
DateOfBirth = dateOfBirth;
}
Opzione 2
DateOfBirth DateOfBirth;
public Person(int day, int month, int year)
{
//Validation to make sure day, month and year are valid.
DateOfBirth = new DateOfBirth(year,month,day);
}
Sto cercando di decidere, quale opzione scegliere. La convalida per l'opzione due potrebbe essere piuttosto complessa perché alcuni mesi hanno un numero diverso di giorni. Pertanto spero che l'opzione 1 sia adatta a questo.
Inoltre, dovrei usare gli alias di tipo nei miei Test di unità o semplicemente fare riferimento ad essi come il tipo primitivo, cioè l'ora della data?