-
Notifications
You must be signed in to change notification settings - Fork 22
反射 BindingFlags 枚举
L edited this page Jan 26, 2021
·
1 revision
定义一个Student
类
public class Student
{
//静态字段
public static string SchoolName { get; set; }
internal static string SchoolAddress { get; set; }
protected static DateTime SchoolEstablishmentTime { get; set; }
private static int SchoolBuildingCount { get; set; }
//不同访问级别的字段
public string name;
internal string address;
protected int age;
private double height;
//不同访问级别的属性
public string Name { get; set; }
internal string Address { get; set; }
protected int Age { get; set; }
private double Height { get; set; }
//不同访问级别的方法
public string GetName()
{
return Name;
}
internal string GetAddress()
{
return Address;
}
protected int GetAge()
{
return Age;
}
private double GetHeight()
{
return Height;
}
}
反射
Type t = typeof(Student);
//默认:实例、静态-非私有字段
var fields = t.GetFields();
//实例、私有字段
var noPublicFields = t.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
//实例、非私有字段
var publicFields = t.GetFields(BindingFlags.Instance | BindingFlags.Public);
//默认:实例、静态-非私有属性
var properties = t.GetProperties();
//实例、私有属性
var noPublicProperties = t.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic);
//实例、非私有属性
var publicProperties = t.GetProperties(BindingFlags.Instance | BindingFlags.Public);
//默认:实例、静态-非私有方法
var methods = t.GetMethods();
//实例、私有方法
var noPublicMethods = t.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic);
//实例、非私有方法
var publicMethods = t.GetMethods(BindingFlags.Instance | BindingFlags.Public);
//默认:实例、静态-非私有属性
var staticProperties = t.GetProperties();
//静态、私有属性
var noPublicStaticProperties = t.GetProperties(BindingFlags.Static | BindingFlags.NonPublic);
//静态、非私有属性
var publicStaticProperties = t.GetProperties(BindingFlags.Static | BindingFlags.Public);
//其他:实例、静态-私有属性
//=noPublicProperties+noPublicStaticProperties
var noPublicProperties2 = t.GetProperties(BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);