反映通用列表类型的属性

时间:2011-06-09 14:03:19

标签: c# .net generics reflection

我有一个类似下面的课程

public class Foo<T>
{
  public List<T> Items{ get; set; }
}

我有一个上面的实例,

Foo<Bar> bars = GetBars();

如何使用反射获取Bar的属性?

我试试这个

PropertyInfo[] properties = bars.Items.First().GetType().GetProperties();

但我认为,这不是一个好方法,有没有更好的方法呢?

2 个答案:

答案 0 :(得分:6)

var Properties = bars.GetType().GetGenericArguments()[0].GetProperties();

假设您不知道列表将包含的类型。

如果它始终是Bar,请使用typeof(Bar).GetProperties();

答案 1 :(得分:1)

尝试:

var properties = typeof(Bar).GetProperties();