2 instantiations of CachingContext
System.Text.Json (2)
System\Text\Json\Serialization\JsonSerializerOptions.Caching.cs (2)
444return new CachingContext(options, hashCode); 454var 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; 289private static CacheEntry CreateCacheEntry(Type type, CachingContext context) 421/// this approach uses a fixed-size array of weak references of <see cref="CachingContext"/> that can be looked up lock-free. 427private static readonly WeakReference<CachingContext>?[] s_trackedContexts = new WeakReference<CachingContext>[MaxTrackedContexts]; 430public static CachingContext GetOrCreate(JsonSerializerOptions options) 437if (TryGetContext(options, hashCode, out int firstUnpopulatedIndex, out CachingContext? result)) 454var ctx = new CachingContext(options, hashCode); 459ref WeakReference<CachingContext>? weakRef = ref s_trackedContexts[firstUnpopulatedIndex]; 480[NotNullWhen(true)] out CachingContext? result) 482WeakReference<CachingContext>?[] trackedContexts = s_trackedContexts; 487WeakReference<CachingContext>? weakRef = trackedContexts[i]; 489if (weakRef is null || !weakRef.TryGetTarget(out CachingContext? ctx))