Separate instances sharing memory
Describe the bug Creating two separate instances of LazyCache, using default constructor will share the same underlying memory. I'm not sure if this is a bug or by design, but it clearly violates the principle of least surprise :)
To Reproduce
using LazyCache;
// First cache
var cache1 = new CachingService();
cache1.GetOrAdd("key1", () => "value1");
// Another cache
var cache2 = new CachingService();
var value = cache2.Get<string>("key1");
Console.WriteLine(value);
// Expected value: null
// Actual value: "value1"
Expected behavior Creating two instances of LazyCache using default constructors, should not share the underlying cache.
** Framework and Platform **
- OS: [Everything]
- Framework [NET8]
- LazyCache Version [e.g. 2.4.0]
Additional context Culprit seems to be this static: https://github.com/alastairtree/LazyCache/blob/633b5702ddbc3e013aa9a3893d7b4dc0c807943f/LazyCache/CachingService.cs#L42
I agree this is an unexpected choice - but I think this is by design. See in the readme
// By default it uses a single shared cache under the hood so cache is shared out of the box (but you can configure this)
IAppCache cache = new CachingService();
However I don't see where to configure this which is a bummer. Going to look for an alternative library.