Estoy intentando utilizar la carga diferida por primera vez para inicializar un objeto de progreso en mi clase. Sin embargo, estoy recibiendo el siguiente error:Lazy <T> Error de carga diferida: un inicializador de campo no puede hacer referencia al campo, método o propiedad no estáticos
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);
});
En .NET 2.0, que puede hacer lo siguiente, pero yo preferiría usar un enfoque más hasta la fecha:
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;
}
}
¿Alguien puede ayudar?
Muchas gracias.
Muchas gracias :) – bobbo
El inicializador perezoso puede devolver null, y aún ser inicializado El getter de la propiedad en ese caso intentará inicializar una y otra vez. – wensveen
@wensveen no, no lo hará: https://gist.github.com/mgravell/b547455bb4afe25cdae44d8cc78b8bdd –