NET Caching Library Help
Static Wrapper
Examples > Static Wrapper

Below is an example how to wrap the SmartCache class in a static Cache wrapper.

 

Example

   

    public class FileCacheExample

    {       

        public void FileCacheExampleUsage()

        {

            //Build parameters for the report

            Dictionary<string, object> parms = new Dictionary<string, object>();

            parms.Add("Month", DateTime.Now.Month);

            parms.Add("Year", DateTime.Now.Year);

 

            //Get the cache key based on the report parameters

            string cacheKey = Cache.Instance.BuildCacheKey("MonthlySalesReport", parms);

 

            //Get the report from the cache, if it does not exist, call the ReportLogic.MonthlySalesReport, save it to the cache and return it

            List<ReportDetail> result = Cache.Instance.Get<List<ReportDetail>>(cacheKey, NetCachingLibraryTest.ReportLogic.MonthlySalesReport, parms);

        }

    }

 

    //Static wrapper

    public static class Cache

    {

        private static SmartCache _smartCache;

        public static FileCacheProvider SecondaryCache { get; set; }

        private static void Setup()

        {

            string cacheDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),

                "KellermanSoftware",

                "NetCachingLibrary",

                "FileCacheExample");

            SecondaryCache = new FileCacheProvider(cacheDirectory);

            SecondaryCache.MaxCacheItems = 400;

           

            SmartConfig config = new SmartConfig(new MemoryCacheProvider(), SecondaryCache);

 

            //Specify UserName and LicenseKey for Licensed Mode

            //config.UserName = "my user name";

            //config.LicenseKey = "my license key";

 

            _smartCache = new SmartCache(config);

        }

        public static SmartCache Instance

        {

            get

            {

                if (_smartCache == null)

                    Setup();

                return _smartCache;

            }

        }

    }

    public static class ReportLogic

    {

        //Example long running report

        public static List<ReportDetail> MonthlySalesReport(Dictionary<string, object> parms)

        {

            System.Threading.Thread.Sleep(1000);

            List<ReportDetail> list = new List<ReportDetail>();

            list.Add(new ReportDetail("Midwest", 233457.47m));

            list.Add(new ReportDetail("Southern", 234789.88m));

            return list;

        }

    }