LCL提供了一种抽象的缓存。它内部使用这个缓存抽象。 虽然默认的实现使用 MemoryCache ,但它可以实现并可用于任何其他缓存提供者。
缓存的主要接口是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(每次使用都会创建)的,那么这可能会释放缓存,因为第二次创建类的对象时,会再次调用构造函数,之前的第一次的缓存可能会被释放。