• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET偷懒大法五(利用匿名方法简化缓存)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

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

:-) 又剩了不少代码!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
小白开学Asp.NetCore开篇发布时间:2022-07-10
下一篇:
[ASP.NETMVC小牛之路]18-WebAPI发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap