Sto tentando di utilizzare il caricamento lazy per la prima volta per inizializzare un oggetto di avanzamento nella mia classe. Tuttavia, sto ottenendo il seguente errore:Lazy <T> Errore di caricamento lento: Un inizializzatore di campo non può fare riferimento al campo, metodo o proprietà non statica
A field initializer cannot reference the non-static field, method, or property.
private Lazy<Progress> m_progress = new Lazy<Progress>(() =>
{
long totalBytes = m_transferManager.TotalSize();
return new Progress(totalBytes);
});
In .NET 2.0, posso effettuare le seguenti operazioni, ma io preferirei usare un altro approccio fino a oggi:
private Progress m_progress;
private Progress Progress
{
get
{
if (m_progress == null)
{
long totalBytes = m_transferManager.TotalSize();
m_progress = new Progress(totalBytes);
}
return m_progress;
}
}
Qualcuno può aiutare?
Molte grazie.
ringrazio molto :) – bobbo
L'inizializzazione pigra può restituire null, e essere ancora inizializzato. In questo caso, la proprietà getter vorrebbe inizializzarsi ancora e ancora. – wensveen
@wensveen no non lo farà: https://gist.github.com/mgravell/b547455bb4afe25cdae44d8cc78b8bdd –