• 巧用泛型和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());

  • 相关阅读:
    复健运动1.0
    testng和pytest
    python排序算法
    万家
    Advanced Installer制作javaweb安装包
    一个由CountDownLatch引发的Bug
    二项树与二项堆
    排序网络
    Neuron+eKuiper 实现工业物联网数据采集、清理与反控
    在微信小程序中打造 MQTT 连接测试工具
  • 原文地址:https://www.cnblogs.com/passer/p/1375687.html
Copyright © 2020-2023  润新知