| File: Internal\ImmutableTypeCache.T.cs | Web Access |
| Project: src\src\Libraries\Microsoft.Extensions.Caching.Hybrid\Microsoft.Extensions.Caching.Hybrid.csproj (Microsoft.Extensions.Caching.Hybrid) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Microsoft.Extensions.Caching.Hybrid.Internal; /// <summary> /// Simple memoize storage for whether the type <typeparamref name="T"/> is blittable, in particular to avoid repeated runtime tests /// in down-level TFMs where this is trickier to determine. The JIT is very effective at accessing this memoized value. /// </summary> /// <typeparam name="T">The type being processed.</typeparam> internal static class ImmutableTypeCache<T> // lazy memoize; T doesn't change per cache instance { // note for blittable types: a pure struct will be a full copy every time - nothing shared to mutate public static readonly bool IsImmutable = (typeof(T).IsValueType && ImmutableTypeCache.IsBlittable<T>()) || ImmutableTypeCache.IsTypeImmutable(typeof(T)); }