zoukankan      html  css  js  c++  java
  • C#反射类中所有字段,属性,方法

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

    我们来看类的结构到底是什么

     

    1.            public class People        //类名 

    2.           

    3.                private static string name;    //字段 

    4.             

    5.                private string sex;//字段 

    6.             

    7.                public string Sex     //属性 

    8.                { 

    9.                    get { return sex; } 

    10.                set { sex = value; } 

    11.            } 

    12.         

    13.            public static string Name    //属性 

    14.            { 

    15.                get { return People.name; } 

    16.                set { People.name = value; } 

    17.            } 

    18.         

    19.            private People() //构造函数 

    20.            { 

    21.         

    22.            } 

    23.         

    24.            public static string GetName()    // 函数 

    25.            { 

    26.         

    27.                if (string.IsNullOrEmpty(name)) 

    28.                { 

    29.                    name = "my name"

    30.                } 

    31.                return name; 

    32.         

    33.         

    34.            } 

    35.         

    36.         

    37.       

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

    运行下列代码:

     

    1.            Type t = typeof(People); 

    2.                         Console.WriteLine("----------------Method------------------"); 

    3.                         MethodInfo[] methods = t.GetMethods( ); 

    4.                        foreach (MethodInfo method in methods) 

    5.                        { 

    6.                            Console.WriteLine("Method:" + method); 

    7.             

    8.                            //Console.WriteLine(method); 

    9.                            //Console.WriteLine("返回值:" + method.ReturnParameter); 

    10.                    } 

    11.                    Console.WriteLine("---------------Field-------------------"); 

    12.                    FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance|BindingFlags.Static); 

    13.         

    14.                    foreach (FieldInfo field in fields) 

    15.                    { 

    16.                        Console.WriteLine("Field:" + field); 

    17.                    } 

    18.         

    19.                    Console.WriteLine("--------------Member--------------------"); 

    20.                    MemberInfo[] members = t.GetMembers(); 

    21.         

    22.                    foreach (MemberInfo member in members) 

    23.                    { 

    24.                        Console.WriteLine("Member:" + member); 

    25.                    } 

    26.                    Console.WriteLine("--------------Property--------------------"); 

    27.                    PropertyInfo[] properties = t.GetProperties( ); 

    28.         

    29.                    foreach (PropertyInfo property in properties) 

    30.                    { 

    31.                        Console.WriteLine("Property:" + property); 

    32.                    } 

    33.                    Console.WriteLine("--------------Constructor--------------------"); 

    34.                    ConstructorInfo[] constructors = t.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance); 

    35.         

    36.                    foreach (ConstructorInfo constructor in constructors) 

    37.                    { 

    38.                        Console.WriteLine("Constructor:" + constructor); 

    39.                    } 

     

    输出结果为:

     

    1.            ----------------Method------------------ 

    2.            Method:System.String get_Sex() 

    3.            Method:Void set_Sex(System.String) 

    4.            Method:System.String get_Name() 

    5.            Method:Void set_Name(System.String) 

    6.            Method:System.String GetName() 

    7.            Method:System.String ToString() 

    8.            Method:Boolean Equals(System.Object) 

    9.            Method:Int32 GetHashCode() 

    10.        Method:System.Type GetType() 

    11.        ---------------Field------------------- 

    12.        Field:System.String sex 

    13.        Field:System.String name 

    14.        --------------Member-------------------- 

    15.        Member:System.String get_Sex() 

    16.        Member:Void set_Sex(System.String) 

    17.        Member:System.String get_Name() 

    18.        Member:Void set_Name(System.String) 

    19.        Member:System.String GetName() 

    20.        Member:System.String ToString() 

    21.        Member:Boolean Equals(System.Object) 

    22.        Member:Int32 GetHashCode() 

    23.        Member:System.Type GetType() 

    24.        Member:System.String Sex 

    25.        Member:System.String Name 

    26.        --------------Property-------------------- 

    27.        Property:System.String Sex 

    28.        Property:System.String Name 

    29.        --------------Constructor-------------------- 

    30.        Constructor:Void .ctor() 

    31.        请按任意键继续. . . 

    另外,我们发现属性SexName编译以后变成了get_Sex,get_Name,set_Sex,set_Name,呵呵,看来还是更java一样
  • 相关阅读:
    【转】adb push&pull bug --- Permission denied----不错
    【转】notepad++设置字体和字体大小
    【转】 Ubuntu下配置USB转串口及串口工具配置--不错
    【转】 ubuntu下fastboot找不到devices
    【转】ubuntu下安装及设置FTP服务器!!
    【转】vsftp 遇到错误 500 OOPS: vsftpd: refusing to run with writable root inside chroot()--不错
    【转】ubuntu安装ftp服务器
    android网址
    【转】Linux下Android ADB驱动安装详解
    【转】(总结)Linux下su与su -命令的本质区别
  • 原文地址:https://www.cnblogs.com/shuzhengyi/p/1848991.html
Copyright © 2011-2022 走看看