最近刚刚开始用反射做项目,遇到一个小的知识点,记录一下。
c#反射查找方法时,默认只能查到public方法。如果想要查找private方法,需要设定BindingFlags.
即:
- BindingFlags.Public|BindingFlags.Instance 默认查找public、instance内容。
- BindingFlags.NonPublic|BindingFlags.Instance 查找nonpublic、instance内容
另外,BindingFlags.Instance和BindingFlags.Static二者必须有一项或者都有。如果你的类是instance(非static的),就选instance,反之选static。如果两者都不选,是找不到任何方法的。
当然,稳妥的办法是全写。即: BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.Static.
当然,BindingFlags还有其他用法,请参考CSDN文档。