【问题标题】:Getting a value from dynamic List从动态列表中获取值
【发布时间】:2016-02-18 19:14:18
【问题描述】:

我有一个动态列表,我正在尝试使用反射从属性中获取值。代码如下:

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 ); 

但它给了我一个错误,说对象与目标类型不匹配。

【问题讨论】:

标签: c# dynamic reflection


【解决方案1】:

你必须将你想要获取其值的对象发送到property.GetValue函数

点赞:data[0]

将您的行替换为: object value = property.GetValue(data[0], null); 这将返回列表中第一个元素的名字。

【讨论】:

  • 当我使用dynamic data = 时,我可以进行索引
  • 但是数据是 IEnumerable 类型的
【解决方案2】:

这里所有的动态对象方法都是一样的,但是你必须从列表中访问数据,所以它看起来如下:

data.GetType().GetProperty("visible").GetValue(data[i],null);

您可以直接进行类型转换并保存在您的类型数据中。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多