Browse Source

Allow to pass DistributedCacheEntryOptions on IDistributedCache.GetOrAdd

pull/625/head
Halil ibrahim Kalkan 8 years ago
parent
commit
1751ecfa00
  1. 16
      framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs
  2. 4
      framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs

16
framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs

@ -63,7 +63,10 @@ namespace Volo.Abp.Caching
return ObjectSerializer.Deserialize<TCacheItem>(cachedBytes); return ObjectSerializer.Deserialize<TCacheItem>(cachedBytes);
} }
public TCacheItem GetOrAdd(string key, Func<TCacheItem> factory) public TCacheItem GetOrAdd(
string key,
Func<TCacheItem> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null)
{ {
var value = Get(key); var value = Get(key);
if (value != null) if (value != null)
@ -80,14 +83,17 @@ namespace Volo.Abp.Caching
} }
value = factory(); value = factory();
Set(key, value); Set(key, value, optionsFactory?.Invoke());
} }
return value; return value;
} }
public async Task<TCacheItem> GetOrAddAsync(string key, Func<Task<TCacheItem>> factory, CancellationToken token = default) public async Task<TCacheItem> GetOrAddAsync(
string key,
Func<Task<TCacheItem>> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null,
CancellationToken token = default)
{ {
var value = await GetAsync(key, token); var value = await GetAsync(key, token);
if (value != null) if (value != null)
@ -104,7 +110,7 @@ namespace Volo.Abp.Caching
} }
value = await factory(); value = await factory();
await SetAsync(key, value, token: token); await SetAsync(key, value, optionsFactory?.Invoke(), token);
} }
return value; return value;

4
framework/src/Volo.Abp.Caching/Volo/Abp/Caching/IDistributedCache.cs

@ -20,12 +20,14 @@ namespace Volo.Abp.Caching
TCacheItem GetOrAdd( TCacheItem GetOrAdd(
string key, string key,
Func<TCacheItem> factory Func<TCacheItem> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null
); );
Task<TCacheItem> GetOrAddAsync( Task<TCacheItem> GetOrAddAsync(
[NotNull] string key, [NotNull] string key,
Func<Task<TCacheItem>> factory, Func<Task<TCacheItem>> factory,
Func<DistributedCacheEntryOptions> optionsFactory = null,
CancellationToken token = default CancellationToken token = default
); );

Loading…
Cancel
Save