反射:PropertyInfo、FieldInfo和MemberInfo的区别
来源:互联网 发布:淘宝订单系统设计 编辑:程序博客网 时间:2024/05/22 04:37
第一次去了解反射中的各个类,暂时先从这几个类进行区分。
首先新建一个类:
其中包括:私有字段 a=1,公共字段 b=3 ,公共属性 A=2
public class myClass { private int a = 1; [Description("2描述")] public int A { get; set; } = 2; [Description("3描述")] public int b=3; }接下来在控制台程序中写入:
获取到myClass的PropertyInfo[]、FieldInfo[]和MemberInfo[]
并对这些类数组进行循环输出,查看获取到的元素是什么
myClass aa = new myClass(); PropertyInfo[] pro = aa.GetType().GetProperties(); FieldInfo[] fil = aa.GetType().GetFields(); MemberInfo[] men = aa.GetType().GetMembers(); foreach (var item in pro) { Console.WriteLine(item.GetValue(aa) + "|" + item.Name+"|"+(item.GetCustomAttributes(typeof(DescriptionAttribute),false).First() as DescriptionAttribute).Description); } Console.WriteLine("FieldInfo的循环"); foreach (FieldInfo item in fil) { Console.WriteLine(item.GetValue(aa) + "|" + item.Name+"|"+(item.GetCustomAttributes(typeof(DescriptionAttribute)).First() as DescriptionAttribute).Description); } Console.WriteLine("MemberInfo的循环"); foreach (MemberInfo item in fil) { Console.WriteLine("|" + item.Name+"|"+ (item.GetCustomAttributes(typeof(DescriptionAttribute)).First() as DescriptionAttribute).Description); }输出结果如下:
PropertyInfo的循环
2|A|2描述
FieldInfo的循环
3|b|3描述
MemberInfo的循环
|b|3描述
结论:PropertyInfo获取到公共属性 A=3,FieldInfo获取到公共字段 b=3,MemberInfo[]获取到b
根据反射三者都能获取到自定义的特性及其配置
阅读全文
0 0
- 反射:PropertyInfo、FieldInfo和MemberInfo的区别
- FieldInfo和PropertyInfo简析
- 在Reflection中,PropertyInfo和FieldInfo有什么区别?
- C#中typeof 与GetType()的区别和methodinfo、memberinfo反射
- 反射可以通过FieldInfo.SetValue设置任何字段的值
- 反射(三)-------PropertyInfo
- C#中的反射举例—FieldInfo
- 关于PropertyInfo setvalue()和PropertyInfo getvalue()
- C# PropertyInfo的用法
- 属性PropertyInfo的使用
- PropertyInfo的使用
- C#利用PropertyInfo反射类实现二个类属性值的比较
- C#利用PropertyInfo反射类实现二个类属性值的比较
- 映射和反射的区别
- 反射和RTTI的区别
- [原创]让你省写大量重复代码的方法 使用PropertyInfo类 反射获取类 的类型
- [原创]让你省写大量重复代码的方法 使用PropertyInfo类 反射获取类 的类型
- 让你省写大量重复代码的方法 使用PropertyInfo类 反射获取类 的类型
- MOOC清华《面向对象程序设计》第8章:装饰模式实验
- PullLoadMoreRecyclerView下拉刷新上拉加载+点击事件
- Intellij Idea的编译和调试快捷键
- 动态库、静态库、运行时库、引入库之间的区别
- 数学运算 计算
- 反射:PropertyInfo、FieldInfo和MemberInfo的区别
- matlab set函数
- 第二周项目0-“输出一段话”
- 使用Junit做参数化测试
- Python的继承方法
- 统计学简介之九——两个总体参数的区间估计
- 9.16 第四题 数论 欧拉筛+唯一分解定理
- 小米笔试题第1题
- am335x 内核源码分析2 LCD移植