zoukankan      html  css  js  c++  java
  • 巧用泛型和Lambda解决只读对象的缓存技巧

        /// <summary>
        
    /// 只读缓存辅助
        
    /// </summary>
        
    /// <typeparam name="KeyType">键类型</typeparam>
        
    /// <typeparam name="ValueType">值类型</typeparam>
        public static class Cache<KeyType, ValueType>
        {
            
    public delegate ValueType GetValue(KeyType key);
            
    private static Dictionary<KeyType, ValueType> data=new Dictionary<KeyType,ValueType>();

            
    /// <summary>
            
    /// 获取缓存中的数据
            
    /// </summary>
            
    /// <param name="key"></param>
            
    /// <param name="get">Lambda表达式,当缓存不存在时获取值的委托</param>
            
    /// <returns></returns>
            public static ValueType Get(KeyType key, GetValue get)
            {
                
    if (data.ContainsKey(key))
                    
    return data[key];
                
    else
                {
                    ValueType value 
    = get(key);
                    data.Add(key,value);
                    
    return value;
                }
            }
        }

    使用例子:

    反射MyModel对象所有属性并且缓存

     PropertyInfo[] MyProperty = Cache<Type, PropertyInfo[]>.Get(typeof(MyModel), p => p.GetProperties());

  • 相关阅读:
    TensorFlow安装流程(GPU加速)
    个人总结
    第十六周学习进度
    第十五周学习进度
    第十四周学习进度
    第二次冲刺个人工作总结12
    第二次冲刺个人工作总结11
    第二次冲刺个人工作总结10
    软件工程课堂作业——购买《哈利波特》的最低价格
    第二次冲刺个人工作总结09
  • 原文地址:https://www.cnblogs.com/passer/p/1375687.html
Copyright © 2011-2022 走看看