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不清楚。