(轉)C#反射使用時注意BindingFlags的用法


c#反射查找方法時,默認只能查到public方法。如果想要查找private方法,需要設定BindingFlags.

即:

BindingFlags.Public|BindingFlags.Instance 默認查找public、instance內容

BindingFlags.NonPublic|BindingFlags.Instance 查找nonpublic、instance內容

另外,BindingFlags.Instance和BindingFlags.Static二者必須有一項或者都有。如果你的類是instance,就選instance,反之選static。如果兩者都不選,是找不到任何方法的

BindingFlags枚舉值:

BindingFlags.IgnoreCase:表示忽略 name 的大小寫,不應考慮成員名的大小寫

BindingFlags.DeclaredOnly:只應考慮在所提供類型的層次結構級別上聲明的成員。不考慮繼承成員。

BindingFlags.Instance:只搜索實例成員

BindingFlags.Static:只搜索靜態成員

BindingFlags.Public:只搜索公共成員

BindingFlags.NonPublic:只搜索非公共成員

BindingFlags.FlattenHierarchy:應返回層次結構上的公共靜態成員和受保護的靜態成員。不返回繼承類中的私有靜態成員。靜態成員包括字段、方法、事件和屬性。不返回嵌套類型。

BindingFlags.InvokeMethod:表示調用方法,而不調用構造函數或類型初始值設定項。對 SetField 或 SetProperty 無效。

BindingFlags.CreateInstance:表示調用構造函數。忽略 name。對其他調用標志無效。

BindingFlags.GetField:表示獲取字段值。

BindingFlags.SetField:表示設置字段值。

BindingFlags.GetProperty:表示獲取屬性。

BindingFlags.SetProperty:表示設置屬性。

 文章轉載自:https://blog.csdn.net/weixin_38109688/article/details/80147535、https://blog.csdn.net/whaxrl/article/details/48542139


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM