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

来源:互联网 发布:moxa串口调试 linux 编辑:程序博客网 时间:2024/05/22 00:41

可能大家都知道在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一样
阅读全文
0 0
原创粉丝点击