Literacy 快速反射读写对象属性,字段
来源:互联网 发布:怎么看电脑mac地址 编辑:程序博客网 时间:2024/06/07 06:44
Literacy 说明
Literacy使用IL指令生成方法委托,性能方面,在调用次数达到一定量的时候比反射高很多
当然,用IL指令生成一个方法也是有时间消耗的,所以在只使用一次或少数几次的情况,不但不能提高性能,反而会使性能下降,所以使用场合需要自己把握
下面是在我的电脑上做的一些测试(因机器配置不同会有少许误差)
所以可以看出,再次数越多的时候和反射的差距越大,在100次以下反射几乎不消耗时间,而IL生成委托就要消耗16ms
关于IL指令生成方法可以参考
玩转动态编译 - 高级篇:一,IL访问静态属性和字段
玩转动态编译 - 高级篇:二,IL设置静态属性,字段和类型转换
玩转动态编译 - 高级篇:三,实例属性的读取与设置
Literacy 常用属性方法
Literacy 方法 Literacy(Type type) 构造函数,加载所有公开属性 Literacy(Type type, bool ignoreCase)
构造函数,加载所有公开属性
ignoreCase 指示属性名是否区分大小写
NewObject()调用对象的无参构造函数,新建对象
Literacy 静态方法 CreateNewObject(Type type, Type[] argTypes = null) IL构造一个用于调用对象指定构造函数的委托 CreateGetter(PropertyInfo prop) IL构造一个用于获取对象属性值的委托 CreateGetter(FieldInfo field) IL构造一个用于获取对象字段值的委托 CreateSetter(PropertyInfo prop) IL构造一个用于设置对象属性值的委托 CreateSetter(FieldInfo field) IL构造一个用于设置对象字段值的委托 Literacy.Load 属性 Load.PublicField() 加载公开的实例字段 Load.NonPublicField() 加载非公开的实例字段 Load.StaticField(bool hasNonPublic) 加载公开静态的字段参数hasNonPublic指示是否同时加载非公开的静态字段 Load.NonPublicProperty() 加载非公开的实例属性 Load.StaticProperty(bool hasNonPublic) 加载公开静态的属性
参数hasNonPublic指示是否同时加载非公开的静态属性Literacy.Property 属性 Property[string name] 获取指定属性的ObjectProperty对象 Property[string name].GetValue(obj instance) 获取实例对象的指定属性的值 Property[string name].TryGetValue(object instance, out object value) 尝试获取实例对象的指定属性的值,失败返回false Property[string name].SetValue(object instance, object value) 设置实例对象的指定属性的值 Property[string name].TrySetValue(object instance, object value) 尝试设置实例对象的指定属性的值,失败返回false Literacy.Field 属性 如果没有手动加载字段,该属性为null Field[string name] 获取指定字段的ObjectProperty对象 Field[string name].GetValue(obj instance) 获取实例对象的指定字段的值 Field[string name].TryGetValue(object instance, out object value) 尝试获取实例对象的指定字段的值,失败返回false Field[string name].SetValue(object instance, object value) 设置实例对象的指定字段的值 Field[string name].TrySetValue(object instance, object value) 尝试设置实例对象的指定字段的值,失败返回false
Literacy调用实例
0 0
- Literacy 快速反射读写对象属性,字段
- C# 反射对象的字段属性和实现的接口
- 反射字段属性
- php对象属性读写
- 78-对象属性读写
- 反射获取对象属性
- 利用反射遍历一个POJO对象的各个字段名及属性。。。
- 利用反射机制,遍历POJO对象的各个字段名及属性
- java反射获取聚合<List>属性字段
- 反射获取对象实例的字段信息和字段值
- 利用Java反射快速封装JavaBean属性
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西付给另一个类对象,而不是付给引用地址)
- java基础-反射3(反射,反射创建对象,操作对象属性,调用对象方法)
- 面向对象概念:字段、属性和方法
- ORM之字段属性对象Field
- JS判断json对象字段属性值
- swift教程【入门】 解开闭包迷惑
- Mac下tar包安装mysql
- 市场营销学第一单元
- 棋类博弈
- Hibernate学习笔记之手工创建第一个Hibernate应用
- Literacy 快速反射读写对象属性,字段
- hdu1829题解(A BUG'S LIFE)简单并查集
- 深入java虚拟机
- Java ConcurrentModificationException异常原因和解决方法
- 【六】 Deep Learning模型之:CNN卷积神经网络(二) 文字识别系统LeNet-5
- 把树莓派3打造成FM电台并播放mp3格式音乐
- linphone-LinphoneCoreFactory.java文件分析
- [C#]Stack类的实现
- java内部结构