c# Attribute与自定义

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);
    }
}
 
 


  1. 第一次去了解反射中的各个类,暂时先从这几个类进行区分。

    首先新建一个类:

    其中包括:私有字段 a=1,公共字段 b=3 ,公共属性 A=2

    public class myClass  
  2.     {  
  3.         private int a = 1;  
  4.         [Description("2描述")]  
  5.         public int A { getset; } = 2;  
  6.         [Description("3描述")]  
  7.         public int b=3;  
  8.     }  


  1.             myClass aa = new myClass();  
  2.             PropertyInfo[] pro = aa.GetType().GetProperties();  
  3.             FieldInfo[] fil = aa.GetType().GetFields();  
  4.             MemberInfo[] men = aa.GetType().GetMembers();  
  5.             foreach (var item in pro)  
  6.         {  
  7.             Console.WriteLine(item.GetValue(aa) + "|" + item.Name+"|"+(item.GetCustomAttributes(typeof(DescriptionAttribute),false).First() as DescriptionAttribute).Description);  
  8.         }  
  9.         Console.WriteLine("FieldInfo的循环");  
  10.         foreach (FieldInfo item in fil)  
  11.             {  
  12.               Console.WriteLine(item.GetValue(aa) + "|" + item.Name+"|"+(item.GetCustomAttributes(typeof(DescriptionAttribute)).First() as DescriptionAttribute).Description);  
  13.         }  
  14.         Console.WriteLine("MemberInfo的循环");  
  15.         foreach (MemberInfo item in fil)  
  16.         {  
  17.             Console.WriteLine("|" + item.Name+"|"+ (item.GetCustomAttributes(typeof(DescriptionAttribute)).First() as DescriptionAttribute).Description);  
  18.         }  

猜你喜欢

转载自blog.csdn.net/linuxheik/article/details/80359428