这里以GetProperties方法为例说明,代码如下:
自定义类
public class Test
{
public static int Age { get; set; }
private static string Name { get; set; }
}
调用代码
Test test = new Test();
Type type = test.GetType();
System.Reflection.PropertyInfo[] propertiesInfo = type.GetProperties(BindingFlags.Static | BindingFlags.NonPublic );
foreach (object item in propertiesInfo)
{
Console.WriteLine(((PropertyInfo)item).Name);
}
BindingFlags.Static/BindingFlags.Instance这两个中的一个必须要使用一个;BindingFlags.NonPublic/BindingFlags.Public这两个中的一个必须要使用一个;
也就是说,静态成员或者实例成员,是否Public访问级别这两个维度都需要指定,如果只是指定某一个维度就会出问题,也可以不使用BindingFlags来指定查找的范围,默认是查找Public的成员(包括Instance和static成员),也就是说默认BindingFlags.Static | BindingFlags.Public|BindingFlags.Instance。