我有一个动态列表,我正在尝试使用反射从属性中获取值。代码如下:
var list = new List<Employee>();
list.Add(new Employee {FirstName="Krishna"});
IEnumerable<dynamic> data = list;
在Employee中,假设我有名为FirstName的属性,
Type type = data.GetType().GetGenericArguments()[0];
PropertyInfo property = type.GetProperty( "FirstName" );
现在,我如何从这个属性获得价值?我试过了:
object value = property.GetValue( data, null );
但是它给我一个错误,说对象与目标类型不匹配。
答案 0 :(得分:1)
您必须向property.GetValue
函数发送要获取其值的对象
喜欢:data[0]
将您的行换成:
object value = property.GetValue(data[0], null);
这将返回列表中第一个元素的FirstName。
答案 1 :(得分:1)
这里所有的动态对象方法都相同,但是你必须从列表中访问数据,所以它看起来如下所示:
data.GetType().GetProperty("visible").GetValue(data[i],null);
您可以直接进行Typecast并保存在您的类型数据中。