using Elsa.Caching.Options; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Options; using Microsoft.Extensions.Primitives; namespace Elsa.Caching.Services; /// public class CacheManager(IMemoryCache memoryCache, IChangeTokenSignaler changeTokenSignaler, IOptions options) : ICacheManager { /// public IOptions CachingOptions => options; /// public IChangeToken GetToken(string key) { return changeTokenSignaler.GetToken(key); } /// public ValueTask TriggerTokenAsync(string key, CancellationToken cancellationToken = default) { return changeTokenSignaler.TriggerTokenAsync(key, cancellationToken); } /// public async Task GetOrCreateAsync(object key, Func> factory) { var result = await memoryCache.GetOrCreateAsync(key, async entry => await factory(entry)); return result; } /// public void Remove(string key) { memoryCache.Remove(key); } }