//Create a Primary Memory Cache with a backing File Cache
string directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "KellermanSoftware", "NetCachingLibrary", "Tests");
SmartConfig config = new SmartConfig(new MemoryCacheProvider(), new FileCacheProvider(directory));
//Specify UserName and LicenseKey for Licensed Mode
//config.UserName = "my user name";
//config.LicenseKey = "my license key";
//Instantiate the cache
SmartCache cache = new SmartCache(config);
//Build parameters for the report
int month = DateTime.Now.Month;
int year = DateTime.Now.Year;
//Get the cache key based on the report parameters
//The get cache key method uses reflection to ensure uniqueness
Dictionary<string, object> parms = new Dictionary<string, object>()
{
{"Month", month },
{"Year", year }
};
string cacheKey = cache.BuildCacheKeyWithReflection("MonthlySalesReport", parms);
//Attempt to load the report from the cache
List<ReportDetail> report = cache.Get<List<ReportDetail>>(cacheKey);
//Not found in the cache
if (report == null)
{
//Load the report from the database
report = ReportLogic.MonthlySalesReport(month, year);
//Save to the cache using the default expiration of 20 minutes for the memory cache and 24 hours for the file cache
cache.Set<List<ReportDetail>>(cacheKey, report);
}