Sto imparando l'ossessione primitiva. Si prega di vedere l'oggetto valore di seguito:
public class UserName
{
private readonly string value;
public UserName(string value)
{
if (value == null)
throw new ArgumentNullException("value");
if (!UserName.IsValid(value))
throw new ArgumentException("Invalid value.", "value");
this.value = value;
}
public static bool IsValid(string candidate)
{
if (string.IsNullOrEmpty(candidate))
return false;
return candidate.Trim().ToUpper() == candidate;
}
public static bool TryParse(string candidate, out UserName userName)
{
userName = null;
if (string.IsNullOrWhiteSpace(candidate))
return false;
userName = new UserName(candidate.Trim().ToUpper());
return true;
}
public static implicit operator string(UserName userName)
{
return userName.value;
}
public override string ToString()
{
return this.value.ToString();
}
public override bool Equals(object obj)
{
var other = obj as UserName;
if (other == null)
return base.Equals(obj);
return object.Equals(this.value, other.value);
}
public override int GetHashCode()
{
return this.value.GetHashCode();
}
}
che ho preso da qui: link
Dire che la classe Root aggregato è: Cliente. Sarebbe "meglio" nominare in questo modo:
CustomerName
CustomerEmail
CustomerZipCode
etc
Dire anche che un cliente ha una lista di ordini, che contiene prodotti. Come denominare la classe Descrizione del prodotto? Le due opzioni sono:
Description
ProductDescription