• C#反射类中所有字段,属性,方法


    可能大家都知道在C#中如何创建一个类,但对于类的结构可能大家不一定了解的很清楚,对于我来说,我之前也搞的不是很明白,今天,当我没事研究反射的时候突然发现了着一点。
    我们来看类的结构到底是什么

              public class People        //类名
    
              {
    
                  private static string name;    //字段
    
               
    
                  private string sex;//字段
    
               
    
                  public string Sex     //属性
    
                  {
    
                      get { return sex; }
    
                   set { sex = value; }
    
               }
    
            
    
               public static string Name    //属性
    
               {
    
                   get { return People.name; }
    
                   set { People.name = value; }
    
               }
    
            
    
               private People() //构造函数
    
               {
    
            
    
               }
    
            
    
               public static string GetName()    // 函数
    
               {
    
            
    
                   if (string.IsNullOrEmpty(name))
    
                   {
    
                       name = "my name";
    
                   }
    
                   return name;
    
            
    
            
    
               }
    
            
    
            
    
           }


    以上所有的构造函数、事件、字段、方法和属性都叫做成员,即Member

    运行下列代码:

     

              Type t = typeof(People);
    
                           Console.WriteLine("----------------Method------------------");
    
                           MethodInfo[] methods = t.GetMethods();
    
                          foreach (MethodInfo method in methods)
    
                          {
    
                              Console.WriteLine("Method:" + method);
    
               
    
                              //Console.WriteLine(method);
    
                              //Console.WriteLine("返回值:" + method.ReturnParameter);
    
                       }
    
                       Console.WriteLine("---------------Field-------------------");
    
                       FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
    
            
    
                       foreach (FieldInfo field in fields)
    
                       {
    
                           Console.WriteLine("Field:" + field);
    
                       }
    
            
    
                       Console.WriteLine("--------------Member--------------------");
    
                       MemberInfo[] members = t.GetMembers();
    
            
    
                       foreach (MemberInfo member in members)
    
                       {
    
                           Console.WriteLine("Member:" + member);
    
                       }
    
                       Console.WriteLine("--------------Property--------------------");
    
                       PropertyInfo[] properties = t.GetProperties();
    
            
    
                       foreach (PropertyInfo property in properties)
    
                       {
    
                           Console.WriteLine("Property:" + property);
    
                       }
    
                       Console.WriteLine("--------------Constructor--------------------");
    
                       ConstructorInfo[] constructors = t.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance);
    
            
    
                       foreach (ConstructorInfo constructor in constructors)
    
                       {
    
                           Console.WriteLine("Constructor:" + constructor);
    
                       }
    
     


    输出结果为:

     
    
              ----------------Method------------------
    
              Method:System.String get_Sex()
    
              Method:Void set_Sex(System.String)
    
              Method:System.String get_Name()
    
              Method:Void set_Name(System.String)
    
              Method:System.String GetName()
    
              Method:System.String ToString()
    
              Method:Boolean Equals(System.Object)
    
              Method:Int32 GetHashCode()
    
           Method:System.Type GetType()
    
           ---------------Field-------------------
    
           Field:System.String sex
    
           Field:System.String name
    
           --------------Member--------------------
    
           Member:System.String get_Sex()
    
           Member:Void set_Sex(System.String)
    
           Member:System.String get_Name()
    
           Member:Void set_Name(System.String)
    
           Member:System.String GetName()
    
           Member:System.String ToString()
    
           Member:Boolean Equals(System.Object)
    
           Member:Int32 GetHashCode()
    
           Member:System.Type GetType()
    
           Member:System.String Sex
    
           Member:System.String Name
    
           --------------Property--------------------
    
           Property:System.String Sex
    
           Property:System.String Name
    
           --------------Constructor--------------------
    
           Constructor:Void.ctor()


           请按任意键继续. . .
    另外,我们发现属性Sex和Name编译以后变成了get_Sex,get_Name,set_Sex,set_Name,呵呵,看来还是更java一样

  • 相关阅读:
    Tutorial中代码的区别及不同效果
    Session
    代码解析&Filter用户授权例子
    web后台运作过程
    工厂纸杯生产流水线管理系统
    Webservice和EJB
    Week8——hashcode()和equals()方法
    Week7——JSON
    Week6——Lifecycle of JSF and Facelets
    Week5——Ajax
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/7606823.html
Copyright © 2020-2023  润新知