阿赛·游梦鱼·郭言赛·阿赛工作室
全站技术源码素材

用匿名函数来更方便的使用缓存

  • 发布时间:2011年7月27日 最近更新:5-2 发布:biancheng 编辑:eesai 字体:
  • 一个数据缓存,一般由数据来源,缓存方案,缓存读取来完成,现在有了匿名函数,可以把获取数据 来源变为匿名函数。这样就可以直接声明一个缓存:

    protected static CacheManager companyCache = new  CacheManager(new SmsDatabaseCache(), (key) =>
                  {
                      return SmsDatabase.Instance.Context.Company.Where(c  => c.ShortNumber == (string)key).SingleOrDefault();
                  });

    SmsDatabaseCache是一个缓存方案,还可以使用SimpleCache,TimeoutCache等实现了ICache接口的类 ,因为我的ICacheManager从ICache继承,所以还可以实现级连缓存哟,例如:

    SmsDatebaseCache是一个依SmsDatabase.Instance.Context的缓存方案,在LinqContextDispose时, 会进行清空数据操作。

    SmsDatabaseCache 

        public class SmsDatabaseCache : ICache
         {
             private Dictionary cache = new  Dictionary();

             public SmsDatabaseCache()
             {
                 SmsDatabase.Instance.PreDisposing += (s, e) =>
                     {
                         cache.Clear();
                     };
             }

             public TData Get(object key)
             {
                 return cache[key];
             }

             public void Set(object key, TData data)
             {
                 cache[key] = data;
             }

         }


    MapSiteMapRssGoTop