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

  • 相关阅读:
    DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
    DVWA 黑客攻防演练(九) SQL 盲注 SQL Injection (Blind)
    DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
    DVWA 黑客攻防演练(七)Weak Session IDs
    DVWA 黑客攻防演练(六)不安全的验证码 Insecure CAPTCHA
    DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
    工作流表结构设计
    Visual Studio 2019尝鲜----新建空项目体验
    《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
    .NET快速开发平台的在线预览
  • 原文地址:https://www.cnblogs.com/passer/p/1375687.html
Copyright © 2011-2022 走看看