zoukankan      html  css  js  c++  java
  • ASP.NET偷懒大法五(利用匿名方法简化缓存)

    这篇不是我想的,是博客园的老赵想的,很是不错.俺就借过来了.原文是您善于使用匿名函数吗?

    我只是把重用的地方封装到一个类里面了

    public static class CacheHelper
    {
        public delegate bool CacheGetter<TData>(out TData data);
        public delegate TData Func<TData>();
        public delegate void Actions<TData>(TData data);
        public static TData Get<TData>(CacheGetter<TData> cacheGetter,Func<TData> sourceGetter,Actions<TData> cacheSetter)
        {
            TData data;
            if (cacheGetter(out data))
            {
                return data;
            }

            data = sourceGetter();
            cacheSetter(data);

            return data;
        }

        public static TData Get<TData>(string cacheKey, Func<TData> cacheGetter)
        {
            TData data;
            object objData = FrameworkCache.SMCache.GetCacheService().RetrieveObject(cacheKey);
            data = (objData == null) ? default(TData) : (TData)objData;
            if (objData != null)
            {
                return data;
            }
            else
            {
                data = cacheGetter();
                FrameworkCache.SMCache.GetCacheService().AddObject(cacheKey, data);
                return data;
            }
        }

    }
    第一个方法是去缓存的委托也放开了,第二个方法是把加缓存取缓存的方法封进去了,因为我的项目里面一般加取缓存的方法都是一样的,只是key不一样罢了.

    调用的时候:

    string cacheKey = "ListCountOfProvince";
            return CacheHelper.Get<IList<Bisou.Model.Bs_Area>>(
                cacheKey,
               
                delegate() // source getter
                {
                      ///读数据.....

                        return 数据集;
                });

    :-) 又剩了不少代码!

  • 相关阅读:
    android 4.0 中出错 java.lang.UnsupportedOperationException
    怎么确定你的CPU是否支持64位虚拟化
    宽度百分比单位的转换公式
    Test SRM Level Three: LargestCircle, Brute Force
    802.11(wifi)的MAC层功能
    zookeeper集群的python代码测试
    mysqldump 命令的使用
    xp硬盘安装Fedora14 过程记录及心得体会(fedora14 live版本680M 和fedora14 DVD版本3.2G的选择)
    ContentProvider的使用
    基于 Java 2 运行时安全模型的线程协作--转
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1222913.html
Copyright © 2011-2022 走看看