缓存分析

LCL提供了一种抽象的缓存。它内部使用这个缓存抽象。 虽然默认的实现使用 MemoryCache ,但它可以实现并可用于任何其他缓存提供者。

ICacheManager

缓存的主要接口是ICacheManager。我们可以注入它并使用它来获得缓存。例子:

public class TestAppService : ApplicationService
{
    private readonly ICacheManager _cacheManager;
    public TestAppService(ICacheManager cacheManager)
    {
        _cacheManager = cacheManager;
    }
    public Item GetItem(int id)
    {
            string key = string.Format(SETTINGS_ALL_KEY);
            return _cacheManager.Get(key, () =>
            { 
                    var item=new Item();
             });
    }
}

在这个例子中,我们注入了ICacheManager,并获取了一个叫做MyCache的缓存对象。

警告:GetCache方法

不要在构造函数中使用GetCache方法。如果你的类是transient(每次使用都会创建)的,那么这可能会释放缓存,因为第二次创建类的对象时,会再次调用构造函数,之前的第一次的缓存可能会被释放。