Skip to content

反射 BindingFlags 枚举

L edited this page Jan 26, 2021 · 1 revision

官方资料 BindingFlags 枚举

定义一个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);
Clone this wiki locally