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. 请按任意键继续. . .
另外,我们发现属性Sex和Name编译以后变成了get_Sex,get_Name,set_Sex,set_Name,呵呵,看来还是更java一样- C#反射类中所有字段,属性,方法
- C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西付给另一个类对象,而不是付给引用地址)
- C#反射的学习(二)--访问字段、属性、方法
- C#类中对字段、属性、方法的介绍
- C#中类的字段,方法和属性的区别
- c# 反射 遍历实体的所有字段,ObjectDumper类实现
- C# 利用反射,遍历获得一个类的所有属性名,方法名,成员名.
- C# 中利用反射机制拷贝类的字段和属性
- 使用反射获取一个类的所有方法和字段
- C# 类中变量初始化:字段初始值无法引用非静态字段、方法或属性
- C#中利用反射操作私有字段与私有方法
- c#类成员(字段、属性、方法、事件)
- c#类成员(字段、属性、方法、事件)
- 通过反射获取类属性字段 以及 调用类方法
- 【.Net码农】C#反射获取 所有字段 及 私有字段
- 通过反射获取类的所有属性和方法
- 反射方式获取父类中的所有属性和方法
- C#中综合使用字段,属性和方法的实例
- 个人日记
- HDOJ4857 反向建图+优先队列
- Kendoui时间格式问题
- 宝岛探险 深度优先—C
- MySQL时间操作
- C#反射类中所有字段,属性,方法
- Ubuntu出现问题
- react native 上拉下拉刷新
- EasyUI电话号码前台校验
- 工作中遇到的一个多线程下导致RCW无法释放的问题
- 快速排序的稳定算法
- Java并发编程:并发容器之ConcurrentHashMap
- rn中常用第三方组件
- linux进程监控重启shell脚本