可能大家都知道在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. 请按任意键继续. . .