现在的位置: 首页 > 综合 > 正文

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

2012年08月20日 ⁄ 综合 ⁄ 共 1293字 ⁄ 字号 评论关闭

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

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

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

:-) 又剩了不少代码!

抱歉!评论已关闭.