2 instantiations of CachingContext
System.Text.Json (2)
System\Text\Json\Serialization\JsonSerializerOptions.Caching.cs (2)
419return new CachingContext(options, hashCode); 429var 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; 264private static CacheEntry CreateCacheEntry(Type type, CachingContext context) 396/// this approach uses a fixed-size array of weak references of <see cref="CachingContext"/> that can be looked up lock-free. 402private static readonly WeakReference<CachingContext>?[] s_trackedContexts = new WeakReference<CachingContext>[MaxTrackedContexts]; 405public static CachingContext GetOrCreate(JsonSerializerOptions options) 412if (TryGetContext(options, hashCode, out int firstUnpopulatedIndex, out CachingContext? result)) 429var ctx = new CachingContext(options, hashCode); 434ref WeakReference<CachingContext>? weakRef = ref s_trackedContexts[firstUnpopulatedIndex]; 455[NotNullWhen(true)] out CachingContext? result) 457WeakReference<CachingContext>?[] trackedContexts = s_trackedContexts; 462WeakReference<CachingContext>? weakRef = trackedContexts[i]; 464if (weakRef is null || !weakRef.TryGetTarget(out CachingContext? ctx))