c # subclasse Lazy

Lazy <T> fornece um método integrado de inicialização de uma instância sob demanda com sincronização opcional para segurança de thread. Você pode querer herdar de Lazy <T> para polimorfismo, mas achar difícil escrever um construtor que possa fazer referência a um delegado baseado em instância para usar como valueFactory.

Aqui está uma técnica para atingir esse objetivo.

public class LinkedRecord : Lazy<object>
{
public LinkedRecord(int key)
:this(new Loader(key))
{
}

private LinkedProperty(Loader loader)
: base(loader.GetValue, LazyThreadSafetyMode.None)
{
}

private class Loader
{
private readonly string _key;

public Loader(int key)

{
this._key = key;

}

public object GetValue()
{
// expensive initialization goes here
}
}
}