2011-05-12 18 views
0

我想製作一個可以通過屬性注入進行測試的Lazy屬性。如果我要使用懶惰字段,我不會在測試過程中看到自己如何注入自己的字段。這是我的代碼:LazyInitializer.EnsureInitialized <T>有明確的線程安全承諾嗎?

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; 
    } 
} 

我想知道BCL團隊是否有承諾這個代碼是線程安全的?從documentation不清楚。

回答

2

從文檔鏈接:

LazyInitializer的方法是線程安全的,可以從多個線程同時調用。