Ich versuche, zum ersten Mal lazy loading zu verwenden, um ein Fortschrittsobjekt in meiner Klasse zu initialisieren. Aber ich bin immer folgende Fehlermeldung:Lazy <T> Lazy loading error: Ein Feldinitialisierer kann nicht auf das nicht statische Feld, die Methode oder die Eigenschaft verweisen
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, kann ich folgende tun, aber ich würde mehr auf dem neuesten Stand Ansatz bevorzugen:
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;
}
}
Kann jemand helfen?
Vielen Dank.
Vielen Dank :) – bobbo
Der faule initializer null zurückkehren können, und noch initialisiert werden. Der Property Getter würde in diesem Fall versuchen, immer wieder zu initialisieren. – wensveen
@wensveen nein wird es nicht: https://gist.github.com/mgravell/b547455bb4afe25cdae44d8cc78b8bdd –