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());

  • 相关阅读:
    JavaScript中的数组
    JavaScript中的对象
    Highcharts中设置x轴为时间的写法
    CSS 选择器(基础)
    DOM节点
    平衡木蜻蜓
    python2.7 qt4
    C语言优先级
    树莓派与stm32通信
    linux下USB转串口配置
  • 原文地址:https://www.cnblogs.com/passer/p/1375687.html
Copyright © 2011-2022 走看看