CacheHelper通用

时间:2015-02-03 18:57:03

标签: c#


我遇到了一个问题,对我来说有点棘手..
我有一个Cache helper类,它是通用的... ... 我正在考虑在if语句之前删除转换,并在最后返回时转换对象......?

1 个答案:

答案 0 :(得分:0)

如果您担心在function.Invoke()之后obj变量可以为null,那么您可以测试并使用默认运算符。

public static class CacheHelper<T>
{
    public static T Get(string key, Func<T> function) {
        var obj = HttpContext.Current.Cache[key]; // removed the cast
        if (obj == null)
        {
            obj = function.Invoke();

            if (obj == null)
            {
                return default(T);
            }

            HttpContext.Current.Cache.Add(key, obj, null, DateTime.Now.AddMinutes(3), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, null);
        }

        return (T)obj; // now obj won't be null, but it might still be a different type
    }
}