using System.Text.Json; using Microsoft.Extensions.Caching.Distributed; namespace Bit.Core.Utilities; public static class DistributedCacheExtensions { public static void Set(this IDistributedCache cache, string key, T value) { Set(cache, key, value, new DistributedCacheEntryOptions()); } public static void Set(this IDistributedCache cache, string key, T value, DistributedCacheEntryOptions options) { var bytes = JsonSerializer.SerializeToUtf8Bytes(value); cache.Set(key, bytes, options); } public static Task SetAsync(this IDistributedCache cache, string key, T value) { return SetAsync(cache, key, value, new DistributedCacheEntryOptions()); } public static Task SetAsync(this IDistributedCache cache, string key, T value, DistributedCacheEntryOptions options) { var bytes = JsonSerializer.SerializeToUtf8Bytes(value); return cache.SetAsync(key, bytes, options); } public static bool TryGetValue(this IDistributedCache cache, string key, out T value) { var val = cache.Get(key); value = default; if (val == null) return false; try { value = JsonSerializer.Deserialize(val); } catch { return false; } return true; } }