Carino questo modo proposto da Frank Quednau di implementare il lazy loading utilizzando l'operatore di null coalescing (ECMA-334, 14.12) e il fatto che il risultato di un'assegnazione e' il valore assegnato all'operando sinistro (ECMA-334, 14.14.1):
internal sealed class PersonProxy : Person
{
public override AddressCollection Addresses
{
get
{
return base.Addresses ?? (base.Addresses = new PersonDataMapper().GetAddressesByCode(this.Code));
}
set
{
base.Addresses = value;
}
}
}
A me sembra molto espressivo.