我使用Reflection来根据指定的动态列名称(模型属性)获取值。
我的问题是当我传递propName时,它在全部大写中,如果我在LowerCase()
中转换它,它仍然与Model property
不匹配。
这是代码: -
public object GetPropValue(object obj, string propName)
{
return obj.GetType().GetProperty(propName).GetValue(obj, null);
}
var Fields = obj.GetPropValue(Employee, item.Key); // item.key = 'ADDRESS'
public class Employee
{
public string Address { get; set; }
....
}
这是什么解决方案?
答案 0 :(得分:1)
如果您不知道确切的财产名称案例:
public object GetPropValue(object obj, string propName)
{
var property = obj.GetType()
.GetProperties()
.SingleOrDefault(p=>p.Name.Equals(propName, StringComparison.OrdinalIgnoreCase));
return property != null ? property.GetValue(obj, null) : null;
}
答案 1 :(得分:0)
将BindingFlags.IgnoreCase
作为第二个参数传递给GetProperty
以获取属性而不检查大小写:
public object GetPropValue(object obj, string propName)
{
return obj.GetType()
.GetProperty(propName, BindingFlags.Instance | BindingFlags.IgnoreCase )
.GetValue(obj, null);
}