2 instantiations of CachingContext
System.Text.Json (2)
System\Text\Json\Serialization\JsonSerializerOptions.Caching.cs (2)
413return new CachingContext(options, hashCode); 423var ctx = new CachingContext(options, hashCode);
16 references to CachingContext
System.Text.Json (16)
System\Text\Json\Serialization\JsonSerializerOptions.Caching.cs (16)
23internal CachingContext CacheContext 30CachingContext GetOrCreate() 32CachingContext ctx = TrackedCachingContexts.GetOrCreate(this); 38private CachingContext? _cachingContext; 258private static CacheEntry CreateCacheEntry(Type type, CachingContext context) 390/// this approach uses a fixed-size array of weak references of <see cref="CachingContext"/> that can be looked up lock-free. 396private static readonly WeakReference<CachingContext>?[] s_trackedContexts = new WeakReference<CachingContext>[MaxTrackedContexts]; 399public static CachingContext GetOrCreate(JsonSerializerOptions options) 406if (TryGetContext(options, hashCode, out int firstUnpopulatedIndex, out CachingContext? result)) 423var ctx = new CachingContext(options, hashCode); 428ref WeakReference<CachingContext>? weakRef = ref s_trackedContexts[firstUnpopulatedIndex]; 449[NotNullWhen(true)] out CachingContext? result) 451WeakReference<CachingContext>?[] trackedContexts = s_trackedContexts; 456WeakReference<CachingContext>? weakRef = trackedContexts[i]; 458if (weakRef is null || !weakRef.TryGetTarget(out CachingContext? ctx))