using System; using System.Reflection; public class Demo { // Make three fields: // The first field is private. private string m_field = "String A"; // The second field is public. public string Field = "String B"; // The third field is public const (hence also literal and static), // with a default value. public const string FieldC = "String C"; } public class Myfieldattributes { public static void Main() { Console.WriteLine ("\nReflection.FieldAttributes"); Demo d = new Demo(); // Get a Type object for Demo, and a FieldInfo for each of // the three fields. Use the FieldInfo to display field // name, value for the Demo object in d, and attributes. // Type myType = typeof(Demo); FieldInfo fiPrivate = myType.GetField("m_field", BindingFlags.NonPublic | BindingFlags.Instance); DisplayField(d, fiPrivate); FieldInfo fiPublic = myType.GetField("Field", BindingFlags.Public | BindingFlags.Instance); DisplayField(d, fiPublic); FieldInfo fiConstant = myType.GetField("FieldC", BindingFlags.Public | BindingFlags.Static); DisplayField(d, fiConstant); } static void DisplayField(Object obj, FieldInfo f) { // Display the field name, value, and attributes. // Console.WriteLine("{0} = \"{1}\"; attributes: {2}", f.Name, f.GetValue(obj), f.Attributes); } }
第一次去了解反射中的各个类,暂时先从这几个类进行区分。
首先新建一个类:
其中包括:私有字段 a=1,公共字段 b=3 ,公共属性 A=2
public class myClass- {
- private int a = 1;
- [Description("2描述")]
- public int A { get; set; } = 2;
- [Description("3描述")]
- public int b=3;
- }
- myClass aa = new myClass();
- PropertyInfo[] pro = aa.GetType().GetProperties();
- FieldInfo[] fil = aa.GetType().GetFields();
- MemberInfo[] men = aa.GetType().GetMembers();
- foreach (var item in pro)
- {
- Console.WriteLine(item.GetValue(aa) + "|" + item.Name+"|"+(item.GetCustomAttributes(typeof(DescriptionAttribute),false).First() as DescriptionAttribute).Description);
- }
- Console.WriteLine("FieldInfo的循环");
- foreach (FieldInfo item in fil)
- {
- Console.WriteLine(item.GetValue(aa) + "|" + item.Name+"|"+(item.GetCustomAttributes(typeof(DescriptionAttribute)).First() as DescriptionAttribute).Description);
- }
- Console.WriteLine("MemberInfo的循环");
- foreach (MemberInfo item in fil)
- {
- Console.WriteLine("|" + item.Name+"|"+ (item.GetCustomAttributes(typeof(DescriptionAttribute)).First() as DescriptionAttribute).Description);
- }