我有以下問題理解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原諒我的天真,我應該知道它不會有任何區別。剛剛通過文檔 –