Domanda

Mi piacerebbe fare una proprietà pigra che può essere testata con l'iniezione di proprietà.Se dovessi usare un campo pigro, non vedo come sarei in grado di iniettare il mio durante il test.Ecco il mio codice:

private IExpensive expensive;
private bool expensiveInitialized;
private object expensiveLockingObject = new object();

public IExpensive Expensive
{
   get
   {
      LazyInitializer.EnsureInitialized(ref expensive, ref expensiveInitialized, ref expensiveLockingObject,
         () => new Expensive(myStaticArg1, myStaticArg2, ...));

      return expensive;
   }
   internal protected set
   {
      expensiveInitialized = true;
      expensive = value;
   }
}
.

Mi sto chiedendo se c'è una promessa dalla squadra BCL che questo codice è al sicuro?Non è stato chiaro da Documentazione .

È stato utile?

Soluzione

Dal collegamento della documentazione:

.

I metodi del laziniilizzatore sono cassetta del filo e possono essere chiamati da thread multipli contemporaneamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top