8[DebuggerDisplay(
"ThreadSafetyMode={Mode}, IsValueCreated={IsValueCreated}, IsValueFaulted={IsValueFaulted}, Value={ValueForDebugDisplay}")]
50 return LazyHelper.CreateViaDefaultConstructor<T>();
63 public Lazy(Func<T> valueFactory)
68 public Lazy(
bool isThreadSafe)
69 : this((Func<T>)null,
LazyHelper.GetModeFromIsThreadSafe(isThreadSafe), useDefaultConstructor: true)
74 : this((Func<T>)null, mode, useDefaultConstructor: true)
78 public Lazy(Func<T> valueFactory,
bool isThreadSafe)
79 : this(valueFactory,
LazyHelper.GetModeFromIsThreadSafe(isThreadSafe), useDefaultConstructor: false)
84 : this(valueFactory, mode, useDefaultConstructor: false)
90 if (valueFactory ==
null && !useDefaultConstructor)
126 lock (executionAndPublication)
128 if (
_state == executionAndPublication)
130 if (useDefaultConstructor)
145 if (lazyHelper == publicationOnly)
193 case LazyState.PublicationOnlyViaConstructor:
196 case LazyState.PublicationOnlyViaFactory:
202 case LazyState.ExecutionAndPublicationViaConstructor:
205 case LazyState.ExecutionAndPublicationViaFactory:
209 state.ThrowException();
222 return Value.ToString();
231 public Lazy(Func<T> valueFactory, TMetadata metadata)
237 public Lazy(TMetadata metadata)
242 public Lazy(TMetadata metadata,
bool isThreadSafe)
248 public Lazy(Func<T> valueFactory, TMetadata metadata,
bool isThreadSafe)
249 : base(valueFactory, isThreadSafe)
261 : base(valueFactory, mode)
static bool GetIsValueFaulted(LazyHelper state)
static readonly LazyHelper PublicationOnlyWaitForOtherThreadToPublish
LazyThreadSafetyMode GetMode()
static readonly LazyHelper NoneViaConstructor
static LazyHelper Create(LazyThreadSafetyMode mode, bool useDefaultConstructor)
void PublicationOnlyWaitForOtherThreadToPublish()
static T CreateViaDefaultConstructor()
void PublicationOnlyViaFactory(LazyHelper initializer)
void PublicationOnly(LazyHelper publicationOnly, T possibleValue)
Lazy(Func< T > valueFactory, TMetadata metadata)
Lazy(Func< T > valueFactory, bool isThreadSafe)
volatile LazyHelper _state
void PublicationOnlyViaConstructor(LazyHelper initializer)
Lazy(Func< T > valueFactory, LazyThreadSafetyMode mode, bool useDefaultConstructor)
void ViaFactory(LazyThreadSafetyMode mode)
override? string ToString()
Lazy(Func< T > valueFactory, TMetadata metadata, LazyThreadSafetyMode mode)
Lazy(LazyThreadSafetyMode mode)
Lazy(Func< T > valueFactory, TMetadata metadata, bool isThreadSafe)
Lazy(Func< T > valueFactory)
void ExecutionAndPublication(LazyHelper executionAndPublication, bool useDefaultConstructor)
Lazy(Func< T > valueFactory, LazyThreadSafetyMode mode)
Lazy(TMetadata metadata, bool isThreadSafe)
readonly TMetadata _metadata
Lazy(TMetadata metadata, LazyThreadSafetyMode mode)
static string Lazy_Value_RecursiveCallsToValue
static string Lazy_ToString_ValueNotCreated
static int CompareExchange(ref int location1, int value, int comparand)
DynamicallyAccessedMemberTypes
@ PublicParameterlessConstructor
@ ExecutionAndPublication
@ PublicationOnlyViaFactory
@ PublicationOnlyViaConstructor