反射中的BindingFlags

不指定绑定标志  BindingFlags.Default

表示忽略 name 的大小写,不应考虑成员名的大小写   BindingFlags.IgnoreCase

只应考虑在所提供类型的层次结构级别上声明的成员。不考虑继承成员    BindingFlags.DeclaredOnly

只搜索实例成员  BindingFlags.Instance

只搜索静态成员  BindingFlags.Static

只搜索公共成员  BindingFlags.Public

只搜索非公共成员(即私有成员和受保护的成员)  BindingFlags.NonPublic

应返回层次结构上的公共静态成员和受保护的静态成员。不返回继承类中的私有静态成员。静态成员包括字段、方法、事件和属性。不返回嵌套类型。 BindingFlags.FlattenHierarchy

表示调用方法,而不调用构造函数或类型初始值设定项。对 SetField 或 SetProperty 无效。  BindingFlags.InvokeMethod

表示调用构造函数。忽略 name。对其他调用标志无效。 BindingFlags.CreateInstance

表示获取字段值。对 SetField 无效。 BindingFlags.GetField

表示设置字段值。对 GetField 无效。 BindingFlags.SetField

表示获取属性。对 SetProperty 无效。BindingFlags.GetProperty

表示设置属性。对 GetProperty 无效。 BindingFlags.SetProperty

二、使用BindingFlags注意事项

1、BindingFlags.IgnoreCase 需要与 BindingFlags.Public 和 BindingFlags.Instance 一起用才会产生效果。

2、为了获取返回值,必须指定 BindingFlags.Instance 或 BindingFlags.Static。

时间: 2024-11-15 01:52:27

反射中的BindingFlags的相关文章

.NET反射中BindingFlags的值

BindingFlags.Default 不指定绑定标志 BindingFlags.IgnoreCase 表示忽略 name 的大小写,不应考虑成员名的大小写 BindingFlags.DeclaredOnly 只应考虑在所提供类型的层次结构级别上声明的成员.不考虑继承成员. BindingFlags.Instance 只搜索实例成员 BindingFlags.Static 只搜索静态成员 BindingFlags.Public 只搜索公共成员 BindingFlags.NonPublic 只搜

C#中 反射中的Assembly(装载程序集):

反射中的Assembly(装载程序集):可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息. 1  String assemblyName = @"NamespaceRef";//命名空间 2     String strongClassName = @"NamespaceRef.China";//需要动态生成的类交China Assembly.Load(assemblyName).CreateInstance(strongClassName);

在java反射中 Class.forName和classLoader的区别

解释 在java中,Class.forName()和ClassLoader()都可以对类进行加载,ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是"通过一个类的全限定名来获取描述此类的二进制字节流",获取到二进制流后放到JVM中.Class.forName()方法实际上也是调用的CLassLoader来实现的. Class.forName(String className)这个方法的源码是: 最后调用的方法是forName0这个方法,在这个forN

java反射中Class详解

package com.hey.reflect; /** * 1.万事万物皆对象,class类同样是Class类的实例对象,比如说一个Student类是Class的实例对象(类是对象,是java.lang.Class类的实例对象) * * 2.有三种方式获取一个类的类类型 * * 3.我们可以通过类的类类型,创建类的实例对象 * */public class ReflectDemo { public static void main(String[] args) { //Foo的实例对象怎么表示

反射中getFields()与getDeclaredFields()区别

* getFields()与getDeclaredFields()区别:getFields()只能访问类中声明为公有的字段,私有的字段它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法 * getMethods()与getDeclaredMethods()区别:getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方

Java反射中的getClass()方法

Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码.严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射机制,但是如果编程语言本身支持反射,那么反射的实现就会方便很多. 1,获得类型类 我们知道在Java中一切都是对象,我们一般所使用的对象都直接或间接继承自Object类.Object类中包含一个方法名叫getClass,利用这个方

在反射中Member{get{..}set{..}}与Member{get;set;}的区别?

最近的在写代码的时候,需要用到反射来获取类中的所有公开属性值,于是写下如下代码: StringBuilder sb = new StringBuilder(); foreach (var f in this.GetType().GetFields()) { sb.AppendLine(string.Format( "{0}={1};", f.Name, f.GetValue(this))); } return sb.ToString(); 工作正常,后又在另一处对另外一个类需要获取属性

反射中getMethods 与 getDeclaredMethods 的区别

public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法.public Method[] getDeclaredMethods()对象表示的类或接口声明的所有方法,包括公共.保护.默认(包)访问和私有方法,但不包括继承的方法.当然也包括它所实现接口的方法. public static void main(String[] args) throws ClassNotFoundException, Illeg

JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来看看这两者的区别吧: getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段. getDeclaredFields():获得某个类的所有声明的字段,即包括public.private和proteced,但是不包括父类的申明字段. 同样类似的还有getConstructors()和getDeclaredConstructors().getMethods()和getDe