• 补充一个技术文章吧,否则真的对不起博客园


            /// <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;
            }
  • 相关阅读:
    Eclipse配置SVN的几种方法及使用详情
    重新定位svn地址的方法(windows和linux),svn switch(sw)的帮助信息
    SVN版本库修改URL路径或者IP地址
    DEA中MAVEN项目有多个子目录,如何加载构建
    DBA的40条军规
    搜索 比MySQL快10倍?这可能是目前AWS Aurora最详解读!
    HttpClient 4.5.3 get和post请求
    基于HttpClient4.5.2实现的HttpClient工具类
    httpClient使用总结
    为何只能在其关联的线程内启动timer?(Qt会检查一致性,否则就不执行)
  • 原文地址:https://www.cnblogs.com/tansm/p/83582.html
Copyright © 2020-2023  润新知