使用PropertyInfo和Reflection在嵌套对象中查找属性值

时间:2019-07-15 19:21:33

标签: c# .net reflection

下面是一个代码示例,该代码让我使用对象的属性名称获取值,它适用于扁平对象。

CaptureRequest.Builder

如果T恰好是一个嵌套对象,我该如何工作? 到目前为止,这是我的递归尝试,但还没有成功。

        public static object GetPropValue<T>(T obj, String propName)
        {
           if (obj == null) { return null; }

           Type type = typeof(T);
           PropertyInfo info = type.GetProperty(propName);
           if (info == null) { return null; }

           return info.GetValue(obj);
        }

在这种情况下,例如,嵌套对象可以是:

        public static object GetPropValue<T>(T obj, String propName)
        {
           if (obj == null) { return null; }

           Type type = typeof(T);

           foreach(PropertyInfo property in  type.GetProperties(BindingFlags.Public))
           {
              if(!property.PropertyType.IsValueType)
              {
                 var nestedObj = (from subObj in obj select property.GetValue(subOjb));

                 //recursive call where object pass in is
                 //one of the nested property object.
                 GetPropValue(nestedObj, propName);

              }
              else
              {
                 return property.GetValue(obj);
              }
           }

        }

0 个答案:

没有答案