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 数据集;
                });

    :-) 又剩了不少代码!

  • 相关阅读:
    如何选择Linux操作系统版本?
    js+html实现玫瑰花绽放
    Linux系统目录结构
    laravel5.6操作数据curd写法(查询构建器)
    laravel5.6 常规框架部署和配置文件说明
    PHP读取XML文件数据获取节点值
    Fiddler正则匹配调试接口示例
    php常用端口号
    php heredoc的用法详解
    oracle表空间操作
  • 原文地址:https://www.cnblogs.com/SoulStore/p/1222913.html
Copyright © 2011-2022 走看看