【C#】BindingFlags

使用 .NET 的反射时,通常会要求传入一个 BindingFlags 参数用于指定反射查找的范围。

tips:C#反射查找方法时默认只查找public方法,如果需要查找其他,需要设置 BindingFlags

设置 BindingFlags BindingFlags.Instance和BindingFlags.Static二者至少有一项,否则也差不到方法

一、枚举值

Default: 默认值

查找:用于反射查找类型成员

IgnoreCase:查找时忽视大小写

DeclaredOnly:查找在特定类型中声明的成员,不包括继承来的成员

Instance:仅查找实例

Static:仅查找静态成员

Public:仅查找公共成员

NonPublic:仅查找非公共成员

FlattenHierarchy:会查找继承树上得到的静态成员,仅包括public和protect静态成员,不包括private静态成员,也不包括嵌套类型

调用:用于为InvokeMember方法提供参数,告知应如何通过反射调用一个方法

InvokeMethod:调用方法

CreateInstance:创建实例

GetField:获取字段的值

SetField:设置字段的值

GetProperty:获取属性的值

SetProperty :设置属性的值

为InvokeMember方法提供参数

PutDispProperty 

PutRefDispProperty 

ExactBinding 

SuppressChangeType 

OptionalParamBinding 

杂项

IgnoreReturn :忽略返回值(在com组件的互操作中使用)

DoNotWrapExceptions :反射调用方法时如果出现异常,禁止把异常包装到TargetInvocationException中

二、常见组合

获取所有成员:

BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance

获取共有实例成员:

BindingFlags.Public | BindingFlags.Instance

详解 .NET 反射中的 BindingFlags 以及常用的 BindingFlags 使用方式 - 腾讯云开发者社区-腾讯云 (tencent.com)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值