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;
            }
  • 相关阅读:
    硬币游戏 Project Euler 232
    屏幕空间的近似全局光照明(Approximative Global Illumination in Screen Space)
    四维之美
    vertex texture fetching in HLSL, and heightfield normal calculation
    一个VS小插件(跳出括号)
    我的算法书籍收藏
    Algorithms.算法概论.习题答案
    UML用例图教程详解
    大连理工大学软件学院博客地址
    快递查询API,我推荐“爱快递”
  • 原文地址:https://www.cnblogs.com/tansm/p/83582.html
Copyright © 2011-2022 走看看