反射的两个过滤枚举
2012-04-08 23:50
204 查看
=============C#.Net 篇目录==============
一、BindingFlags(绑定约束):
指定控制绑定和由反射执行的成员和类型搜索方法的标志。
其枚举按功能可分为如下3种
1. 可访问性标识
调用Type的GetMembers,GeNestedTypes,GetFields,GetConstructors,GetMethods,GetProperties或者GetEvents来查询一个类型的成员时,可以使用 BindingFlags 实参指定搜索符号。
如果调用无此参数的重载版本那么 BindingFlags 取默认值Public|Instance|Static ,即只返回公共成员。
2. 绑定参数标识
3. 操作标识
在“操作”标识中大多数标识都是互斥的,只可同时指定 GetField 和 GetProperty标识,这时的 InvokeMember绑定行为是:先查找一个匹配的字段,如果没有找到匹配的字段,就查找一个匹配的属性。( SetField 和 GetProperty 类似)
一、MemberTypes(成员类型)
{Constructor,Event,Field,Method,Property,TypeInfo,Custom,NestedType,All}
调用 Type 的 FindMembers,GetMember 搜索成员时,需要传入 MemberTypes 标识,用于决定要查找的 MemberInfo 的成员类型,如限定为 构造函数、事件、自定义成员类型等等。
相关链接:
(9)程序集的加载和反射
一、BindingFlags(绑定约束):
指定控制绑定和由反射执行的成员和类型搜索方法的标志。
其枚举按功能可分为如下3种
1. 可访问性标识
调用Type的GetMembers,GeNestedTypes,GetFields,GetConstructors,GetMethods,GetProperties或者GetEvents来查询一个类型的成员时,可以使用 BindingFlags 实参指定搜索符号。
如果调用无此参数的重载版本那么 BindingFlags 取默认值Public|Instance|Static ,即只返回公共成员。
Default | 不指定绑定标志。 |
IgnoreCase | 不区分大小写搜索指定字符串匹配的成员 |
IgnoreReturn | 在 COM 互操作中用于指定可以忽略成员的返回值。 |
FattenHierarchy | 返回基类型定义的公共静态成员和受保护的静态成员。(静态成员包括字段、方法、事件和属性。不返回嵌套类型) |
DeclaredOnly | 只返回被反射的那个类型的成员,忽略继承的成员 |
Instance | 返回实例成员 |
Static | 返回静态成员 |
Public | 返回公共成员 |
NonPublic | 返回非公共成员 |
2. 绑定参数标识
ExactBinding | 绑定器查找其形参类型与传递的实参类型必须完全一致的成员。 如果调用方提供一个非空 Binder 对象,则“反射”将引发异常,因为这意味着调用方正在提供的 BindToXXX实现将选取适当的方法。 |
OptionalParamBinding | 返回其参数计数与提供参数的数目匹配的成员集。如果一些成员的参数具有默认值,或者一些方法要获取数量可变的实参,这个参数就有用了。只有 Type 的InvokeMember 方法才支持这个标志。 |
3. 操作标识
InvokeMethod | 指定要调用一个方法。它不能是构造函数或类型初始值设定项。 |
CreateInstance | 指定创建一个新对象并调用其构造器 |
GetField | 指定应返回指定字段的值 |
SetField | 指定应设置指定字段的值 |
GetProperty | 指定应调用属性的 get 访问器方法 |
SetProperty | 指定应调用属性的 set 访问器方法 对于 COM 属性,指定此绑定标志与指定 PutDispProperty 和 PutRefDispProperty 是等效的,如果 COM 属性同时具有 PROPPUT 和 PROPPUTREF,而且需要区分调用哪一个,则使用对应的 PutDispProperty 或 PutRefDispProperty。 |
PutDispProperty | 指定应调用 COM 对象的 PROPPUT 成员。PROPPUT 指定【使用值的属性】设置函数。 |
PutRefDispProperty | 指定应调用 COM 对象的 PROPPUTREF 成员。PROPPUTREF 指定【使用引用】设置函数。 |
一、MemberTypes(成员类型)
{Constructor,Event,Field,Method,Property,TypeInfo,Custom,NestedType,All}
调用 Type 的 FindMembers,GetMember 搜索成员时,需要传入 MemberTypes 标识,用于决定要查找的 MemberInfo 的成员类型,如限定为 构造函数、事件、自定义成员类型等等。
相关链接:
(9)程序集的加载和反射
相关文章推荐
- java通过反射拷贝两个对象的同名同类型变量
- java比较两个字符串完全不同处高亮显示(过滤了某些字符串前面不不相干字符)
- 学习笔记--枚举,反射
- 黑马程序员_JAVA_枚举和反射总结
- java 反射和暴力反射 两个DEMO
- FZU 2150 Fire Game(枚举两个源点的bfs)
- 记录个人一直以来对枚举定义和使用的两个误解
- Java 反射机制(二)使用反射破坏单例,使用枚举加强单例
- .NET 4.5(C#):TypeInfo类型和反射中的成员枚举
- 【从头开始学Java】Java的继承(枚举、反射)
- [Django]比较同一个model中的两个字段,进行条件过滤
- 类的加载与类加载器、反射与枚举
- SQL语句-统计全部数据,过滤掉其中两个字段同时重复的记录
- 黑马程序员有关枚举,反射,泛型的总结
- Java基础 - 类的加载,类加载器,反射,动态代理,模板设计模式,JDK5新特性,枚举(类),JDK1.7新特性
- 枚举系统的过滤驱动
- 字符串转枚举(两个枚举类型)
- 黑马程序员--枚举,反射学习及其总结
- 黑马程序员----枚举反射
- 计算两个日期相差的工作天数,过滤了周末双休天数