您的位置:首页 > 其它

反射的两个过滤枚举

2012-04-08 23:50 204 查看
         =============C#.Net 篇目录==============

 

一、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 指定【使用引用】设置函数。

在“操作”标识中大多数标识都是互斥的,只可同时指定 GetField 和 GetProperty标识,这时的 InvokeMember绑定行为是:先查找一个匹配的字段,如果没有找到匹配的字段,就查找一个匹配的属性。( SetField 和 GetProperty 类似)

 

一、MemberTypes(成员类型)

{Constructor,Event,Field,Method,Property,TypeInfo,Custom,NestedType,All}

         调用 Type 的 FindMembers,GetMember 搜索成员时,需要传入 MemberTypes 标识,用于决定要查找的 MemberInfo 的成员类型,如限定为 构造函数、事件、自定义成员类型等等。

 

        相关链接:

                           (9)程序集的加载和反射

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: