Skip to content

Commit fc54677

Browse files
authored
Merge pull request #53 from cnblogs/hotfix-GetValueOrCreateAsync
Fix incorrect parameter type for GetValueOrCreateAsync method
2 parents 437ed4d + 1532baf commit fc54677

File tree

5 files changed

+16
-16
lines changed

5 files changed

+16
-16
lines changed

Enyim.Caching.Tests/MemcachedClientGetTests.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,17 @@ public void When_Getting_SByte_Result_Is_Successful()
9999
}
100100

101101
[Fact]
102-
public async Task When_GetValueOrCreateAsync_Is_Successful()
102+
public async Task GetValueOrCreateAsyncTest()
103103
{
104-
var key = GetUniqueKey("Get");
105-
var expected = "hello word";
106-
var value = await _client.GetValueOrCreateAsync(key, 10, Task.FromResult(expected));
107-
Assert.Equal(expected, value);
108-
Assert.Equal(expected, await _client.GetValueAsync<string>(key));
109-
110-
key = GetUniqueKey("Get");
111-
await _client.GetValueOrCreateAsync(key, 10, Task.FromResult<string>(null));
112-
Assert.False((await _client.GetAsync<string>(key)).Success);
104+
var key = "GetValueOrCreateAsyncTest_" + Guid.NewGuid();
105+
await _client.GetValueOrCreateAsync(key, 10, () => GenerateValue());
106+
var cacheValue = await _client.GetValueAsync<string>(key);
107+
Assert.Equal(nameof(GetValueOrCreateAsyncTest), cacheValue);
108+
}
109+
110+
private Task<string> GenerateValue()
111+
{
112+
return Task.FromResult(nameof(GetValueOrCreateAsyncTest));
113113
}
114114
}
115115
}

Enyim.Caching/Enyim.Caching.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<Description>EnyimMemcachedCore is a Memcached client library for .NET Core. Usage: Add services.AddEnyimMemcached(...) and app.UseEnyimMemcached() in Startup. Add IMemcachedClient into constructor.</Description>
5-
<VersionPrefix>2.1.2</VersionPrefix>
5+
<VersionPrefix>2.1.3</VersionPrefix>
66
<Authors>cnblogs.com</Authors>
77
<TargetFramework>netstandard2.0</TargetFramework>
88
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>

Enyim.Caching/IMemcachedClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface IMemcachedClient : IDisposable
1616

1717
Task<IGetOperationResult<T>> GetAsync<T>(string key);
1818
Task<T> GetValueAsync<T>(string key);
19-
Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Task<T> generator);
19+
Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Func<Task<T>> generator);
2020
object Get(string key);
2121
T Get<T>(string key);
2222
IDictionary<string, T> Get<T>(IEnumerable<string> keys);

Enyim.Caching/MemcachedClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,15 +219,15 @@ public async Task<T> GetValueAsync<T>(string key)
219219
return result.Success ? result.Value : default(T);
220220
}
221221

222-
public async Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Task<T> generator)
222+
public async Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Func<Task<T>> generator)
223223
{
224224
var result = await GetAsync<T>(key);
225225
if (result.Success)
226226
{
227227
return result.Value;
228228
}
229229

230-
var value = await generator;
230+
var value = await generator?.Invoke();
231231
if (value != null)
232232
{
233233
await AddAsync(key, value, cacheSeconds);

Enyim.Caching/NullMemcachedClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ public Task SetAsync(string key, object value, int cacheSeconds)
248248
return Task.CompletedTask;
249249
}
250250

251-
public Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Task<T> generator)
251+
public Task<T> GetValueOrCreateAsync<T>(string key, int cacheSeconds, Func<Task<T>> generator)
252252
{
253-
return generator;
253+
return generator?.Invoke();
254254
}
255255

256256
public Task FlushAllAsync()

0 commit comments

Comments
 (0)