Type.GetProperties方法

时间:2009-08-07 18:11:47

标签: c# .net reflection

我有一个这样的课程:

class ItemList
{
    Int64 Count { get; set; }
}

当我写这篇文章时:

ItemList list = new ItemList ( );

Type type = list.GetType ( );
PropertyInfo [ ] props = type.GetProperties ( );

我为道具获得了一个空数组。

为什么呢?是因为GetProperties不包含自动属性吗?

1 个答案:

答案 0 :(得分:18)

问题是GetProperties默认只返回Public属性。在C#中,默认情况下成员不公开(我相信它们是内部的)。试试这个

var props = type.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic);

BindingFlags枚举非常灵活。上面的组合将返回该类型上的所有非公共实例属性。您可能想要的是所有实例属性,无论可访问性如何。在这种情况下,请尝试以下

var flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
var props = type.GetProperties(flags);