我有以下问题理解singleinstance结合工程Autofac单实例
我有下面的类上市
public interface ICacheManager
{
object Get(string key);
void Set(string key, object data, int cacheTime);
bool IsSet(string key);
void Invalidate(string key);
}
如何实现如下
public class MemoryCacheManager : ICacheManager
{
private ObjectCache Cache
{
get { return MemoryCache.Default; }
}
public object Get(string key)
{
return Cache[key];
}
public void Set(string key, object data, int cacheTime)
{
var policy = new CacheItemPolicy { AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime) };
Cache.Add(new CacheItem(key, data), policy);
}
public bool IsSet(string key)
{
return Cache[key] != null;
}
public void Invalidate(string key)
{
Cache.Remove(key);
}
}
在autofac注册如下
builder.RegisterType<MemoryCacheManager>().As<ICacheManager>().SingleInstance();
现在我的问题是这样的
说,我有一个使用的ICacheManager依赖
public class ClassA
{
private readonly ICacheManager _cacheManager;
public ClassA(ICacheManager cacheManager)
{
_cacheManager = cacheManager;
}
private void BindItem(object o)
{
if(!_cacheManager.IsSet("SOME_KEY"))
_cacheManager.Set("SOME_KEY", O, 60);
}
}
对象O已被添加到缓存中,如果的ICacheManager实例在后者解决后下面的类上市时间,它是否会包含新添加的项目。
在你的情况下,它甚至不不管你如何注册'MemoryCacheManager',因为它不包含任何状态。它只是重定向到“MemoryCache.Default”,并且是否包含新添加的项目直到“MemoryCache.Default”实现。 – Steven
@Steven原谅我的天真,我应该知道它不会有任何区别。刚刚通过文档 –