zoukankan      html  css  js  c++  java
  • 补充一个技术文章吧,否则真的对不起博客园

            /// <summary> 较安全的返回指定属性的值 </summary>
            
    /// <remarks>
            
    /// 例如,如果你想获得Company的CompanyCode的DefaultCode属性,可以使用
            
    /// <code>
            
    /// object code = _company.SafeGetValue("CompanyCode.DefaultCode");
            
    /// </code>
            
    /// 但注意:
            
    ///        传入的参数(属性名)不允许书写错误,在此方法中不对此进行检查;
            
    /// </remarks>

            public object SafeGetValue(string propertyName)
            
    {
                
    string[] props = propertyName.Split('.');
                
    string propName;
                PropertyInfo propInfo;
                
    object obj = this;
                Type objType;

                
    for (int i = 0; i < props.Length; i++)
                
    {
                    objType 
    = obj.GetType();

                    propName 
    = props[i];
                    
    if (propName.Trim().Length == 0)
                        
    throw new ArgumentException("propertyName");

                    
    try
                    
    {
                        propInfo 
    = objType.GetProperty(propName);
                        
    if (propInfo == null)
                            
    throw new ArgumentException("propertyName");

                        obj 
    = propInfo.GetValue(obj, null);
                    }

                    
    catch (AmbiguousMatchException)
                    
    {
                        PropertyDescriptorCollection propDescs 
    = TypeDescriptor.GetProperties(objType);
                        PropertyDescriptor propDesc 
    = propDescs.Find(propName, false);
                        
    if (propDesc == null)
                            
    throw new ArgumentException("propertyName");
                        
    else
                        
    {
                            obj 
    = propDesc.GetValue(obj);
                        }

                    }


                    
    if (obj == null)
                        
    return null;
                }

                
    return obj;
            }
  • 相关阅读:
    pip升级报错AttributeError: 'NoneType' object has no attribute 'bytes'
    在Windows中安装MySQL
    nginx配置成功,浏览器无法访问
    mysql 安装完以后没有mysql服务
    对字符串的切片操作
    linux下anaconda的安装和使用
    python学习笔记
    python学习笔记2018-9-18
    python学习笔记2018-9-17
    电脑必须用U盘引导盘才能进系统解决办法
  • 原文地址:https://www.cnblogs.com/tansm/p/83582.html
Copyright © 2011-2022 走看看