您的位置:首页 > 编程语言 > C#

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

2015-11-03 09:25 357 查看
可能大家都知道在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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: