here is a sample of a code that let me get the value using an object's property name, it works with flatten objects.
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);
}
How can I make this work if T happens to be a nested object? Here is my attempt so far with recursive but no luck yet.
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);
}
}
}
In this case, for example a nested object can be:
public class A{
public string property1 {get; set;}
public B property2 {get;set;}
}
public class B{
public string property3 {get;set;
public C property4 {get;set;}
}
public class C{
public string property5 {get;set;}
}
Aucun commentaire:
Enregistrer un commentaire