我们经常需要通过反射来调用目标对象的方法或获取/设置目标对象的属性,Type.InvokeMember 方法签名如下:

public object InvokeMember(string name,BindingFlags invokeAttr,Binder binder,  object target,object[] args,CultureInfo culture);

BindingFlags 有个枚举值是BindingFlags.IgnoreCase ,表示忽略name的大小。我在今天解决一个问题时,就需要用到BindingFlags.IgnoreCase。问题是这样的,我想根据数据库列的列名来通过反射从Entity对象中获取对应的属性值,大家知道,从Oracle数据库提取的列名全是大写的,而Entity中的属性名是使用的Pascal命名方法,如果不忽略属性名的大小写,则反射会失败。
    于是我像下面的方式获取属性:

t.InvokeMember(para.SourceColumn , BindingFlags.IgnoreCase |BindingFlags.GetProperty ,null ,obj ,null) ;

可是反射失败了!经过一段时间的尝试,终于发现BindingFlags.IgnoreCase 需要与BindingFlags.Public和BindingFlags.Instance联用才会产生效果。

t.InvokeMember(para.SourceColumn , BindingFlags.Public |BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.GetProperty ,null ,obj ,null) ;

如此,则可以忽略大小写来获取属性值了。

反射中使用 BindingFlags.IgnoreCase相关推荐

  1. 反射 BindingFlags.IgnoreCase 的用法

    反射属性名称,属性名称不区别大小写 PropertyInfo pi = typeof(object).GetProperty("PropertyName", BindingFlag ...

  2. Go - 反射中 函数 和 方法 的调用 - v.Call()

    上一篇文章 说到了 Golang 中的反射的一些基本规则,重点就是文章中最后的三点,但是这篇文章并没有说如何在反射中调用函数和方法,这就是接下来要说的. 反射中调用 函数 众所周知,Golang 中的 ...

  3. java 反射 本类,关于Java反射中基本类型的class有关问题

    关于Java反射中基本类型的class问题 1. 基本类型的class和其对应包装类的class是不同的,所以在获得Method指定参数的时候,需要精确指定参数的类型,即 setInt(int x) ...

  4. 一文读懂高速互联的阻抗及反射(中)

    一文读懂高速互联的阻抗及反射(中) 勘误: 上篇中:电感的电抗叫做感抗,表示为: X L = j ω C X_L = {j \omega C} XL​=jωC 上述公式应该改为: X L = j ω ...

  5. Java反射实践:从反射中理解class

    写在前面 今天在需求评审的时候,遇到了挺有意思的要求.需求是什么样子就不说了.总之完成这个需求需要一个调用系统api的操作.然而这个api因为并不稳定的原因.被谷歌hide掉了. 这个时候我们最直接的 ...

  6. Java编程之反射中的注解详解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  7. java 反射 参数 注解_Java编程之反射中的注解详解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  8. java反射 注解_Java反射中的注解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  9. kotlin 反射java类_关于Kotlin反射中实例化类的问题

    先上java代码: public class TUtil { public static T getT(Object o, int i) { try { return ((Class) ((Param ...

最新文章

  1. linux的find命令
  2. 《Adobe Acrobat X中文版经典教程》—第1章复 习
  3. Linux设备驱动之I/O端口与I/O内存
  4. Linux之VMware Tools显示灰色正确解决办法
  5. android string拼接字符串_为什么阿里巴巴不建议在循环体中使用+进行字符串拼接?...
  6. 什么镜头最适合拍风景_35mm F1.8定焦镜头,拍人拍风景都可以!
  7. 三大前端框架,哪个框架组件间交互像js方法传值一样简单
  8. 广州java开发招聘,大厂面试题汇总
  9. 关于使用Kaptcha验证码框架遇到的问题
  10. java零基础自学首选黑马程序员Java入门教程笔记01
  11. Android在自定义View(SurfaceView)中实现进度条Progress
  12. dm9000数据速率_STM32网络通信之DM9000A电路设计
  13. 魏俊妮《支持业务发展为核心的HR六大模块体系构建》课程大纲
  14. COGS2434 暗之链锁
  15. 微信公众号图文编辑新手教程
  16. Android实现有声计算器代码,有声语音计算器效果与代码
  17. 读取三维数据.stl文件
  18. 在linux下 用户的密码错误,linux中root用户密码错误如何解决
  19. 合工大计算机考研数学,[考研干货]一战上岸合肥工业大学,来给大家分享一下考研心得...
  20. 分享几种论文写作神器,提高你的写作效率

热门文章

  1. C++Adaline自适应线性神经网络算法(附完整源码)
  2. QT的QDebug类的使用
  3. QT的QColorDialog类的使用
  4. c++异常处理的基本思想
  5. 引入Spacy模块出错—OSError: [E941] Can‘t find model ‘en‘.
  6. 30_visdom可视化、TensorboardX及其案例、安装visdom、使用visdom的案例
  7. 如何使用Fiddler调试线上JS代码(转自:http://www.cnblogs.com/RockLi/p/3511132.html)
  8. 1Boost之TCP,Client and Server
  9. CheckStyle及其配置的详细解释
  10. org.springframework.jdbc.core.JdbcTemplate 无法import原因分析