Esempio n. 1
0
 public Cache(Func <IEnumerable <T> > initialCacheFunc)
 {
     this.initialCacheFunc = initialCacheFunc;
     primaryCache          = new PrimaryCache <T>();
     secondaryCaches       = new SecondaryCaches <T>();
     cacheStorageStrategy  = CacheStorageStrategyManager.GetStrategy();
     cacheMissStrategy     = new DefaultCacheMissStrategy <T>();
 }
Esempio n. 2
0
        internal void BuildCache()
        {
            if (cacheIsBuilt)
            {
                return;
            }

            if (cacheStorageStrategy.HasExpired <T>())
            {
                var data = initialCacheFunc().ToList();
                InitializeCache(data);
            }
            else
            {
                primaryCache    = cacheStorageStrategy.Load <PrimaryCache <T> >("Primary");
                secondaryCaches = cacheStorageStrategy.Load <SecondaryCaches <T> >("Secondary");
            }

            cacheIsBuilt = true;
        }