如何使用 Microsoft.Extensions.Caching.Memory 的 IMemoryCache.CreateEntry 和 ICacheEntry?

Flo*_*ian 4 c# .net-5

我找到了这个界面,我想使用它。但我不明白如何使用创建功能......

namespace Microsoft.Extensions.Caching.Memory
{
    public interface IMemoryCache : IDisposable
    {
        ICacheEntry CreateEntry(object key);
        void Remove(object key);
        bool TryGetValue(object key, out object value);
    }
}
Run Code Online (Sandbox Code Playgroud)

当函数调用中只有键没有值时,如何在 CreateEntry 中存储内容?如何在钥匙中存储一些东西?

所以我有这个:

class RedisObjectTestCache : IMemoryCache
    {
        public ICacheEntry CreateEntry(object key)
        {
            Console.WriteLine("Created key: " + key);
            return new CacheEntryTest() { };
        }

        public void Dispose()
        {
            Console.WriteLine("Dispose");
            return;
        }

        public void Remove(object key)
        {
            Console.WriteLine("Removed key: " + key);
            return;
        }

        public bool TryGetValue(object key, out object value)
        {
            Console.WriteLine("Requested key: " + key);
            value = "";
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我用框架调用它:

QueryCacheManager.Cache = new RedisObjectTestCache();
Run Code Online (Sandbox Code Playgroud)

我能以某种方式获得价值吗?

Ric*_*ing 5

从该ICacheEntry方法返回的实例CreateEntry有一个Value属性,您可以将其设置为要缓存的值,以及可用于控制缓存的其他几个属性。

IMemoryCache接口还有多种扩展方法,它们提供了在缓存中设置项目的快捷方式。