From 1751ecfa00eca9c13b7e552a59f88701166d942a Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Thu, 6 Dec 2018 09:04:31 +0300 Subject: [PATCH] Allow to pass DistributedCacheEntryOptions on IDistributedCache.GetOrAdd --- .../Volo/Abp/Caching/DistributedCache.cs | 16 +++++++++++----- .../Volo/Abp/Caching/IDistributedCache.cs | 4 +++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs index b8b897068f..c897a20e3a 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs @@ -63,7 +63,10 @@ namespace Volo.Abp.Caching return ObjectSerializer.Deserialize(cachedBytes); } - public TCacheItem GetOrAdd(string key, Func factory) + public TCacheItem GetOrAdd( + string key, + Func factory, + Func optionsFactory = null) { var value = Get(key); if (value != null) @@ -80,14 +83,17 @@ namespace Volo.Abp.Caching } value = factory(); - Set(key, value); - + Set(key, value, optionsFactory?.Invoke()); } return value; } - public async Task GetOrAddAsync(string key, Func> factory, CancellationToken token = default) + public async Task GetOrAddAsync( + string key, + Func> factory, + Func optionsFactory = null, + CancellationToken token = default) { var value = await GetAsync(key, token); if (value != null) @@ -104,7 +110,7 @@ namespace Volo.Abp.Caching } value = await factory(); - await SetAsync(key, value, token: token); + await SetAsync(key, value, optionsFactory?.Invoke(), token); } return value; diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs index 5fd6d2d84f..1e21d3a3a6 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs @@ -20,12 +20,14 @@ namespace Volo.Abp.Caching TCacheItem GetOrAdd( string key, - Func factory + Func factory, + Func optionsFactory = null ); Task GetOrAddAsync( [NotNull] string key, Func> factory, + Func optionsFactory = null, CancellationToken token = default );