public Cache(Func <IEnumerable <T> > initialCacheFunc) { this.initialCacheFunc = initialCacheFunc; primaryCache = new PrimaryCache <T>(); secondaryCaches = new SecondaryCaches <T>(); cacheStorageStrategy = CacheStorageStrategyManager.GetStrategy(); cacheMissStrategy = new DefaultCacheMissStrategy <T>(); }
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; }