如何获取完整BindingFlags枚举成员以获取所有属性?
如何获取BindingFlags枚举的全部成员?
嗨,我来帮你搞定这个问题~ 其实完全不用手动一个个枚举组合,有更省心的方法:
1. 获取BindingFlags枚举的所有单独成员
如果你只是想查看这个枚举定义的每一个成员(比如确认所有可选标记),可以用Enum.GetValues或Enum.GetNames方法:
// 获取所有BindingFlags枚举值的数组 BindingFlags[] allFlags = (BindingFlags[])Enum.GetValues(typeof(BindingFlags)); // 遍历输出每个成员的名称和对应数值 foreach (var flag in allFlags) { Console.WriteLine($"{flag}: {(int)flag}"); } // 或者只获取成员名称字符串数组 string[] flagNames = Enum.GetNames(typeof(BindingFlags));
Enum.GetValues会直接返回该枚举类型的所有可能值,强转成BindingFlags[]后就能逐个访问每个标记了。
2. 组合所有BindingFlags值用于反射操作
如果你是想把所有BindingFlags标记组合起来(比如在反射中尝试获取所有可能的成员),可以通过遍历所有枚举值并按位或来实现:
BindingFlags allCombinedFlags = BindingFlags.Default; foreach (BindingFlags flag in Enum.GetValues(typeof(BindingFlags))) { allCombinedFlags |= flag; }
不过这里要提一句:不是所有BindingFlags标记在反射获取成员时都有用,比如CreateInstance是用来创建对象实例的,ExactBinding是参数匹配的规则,强行组合所有标记可能会导致反射行为不符合预期。如果你的目标是获取所有属性/方法/字段,更合理的组合是:
// 获取所有实例+静态、公共+非公共的成员 BindingFlags commonCombination = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
这样既覆盖了绝大多数常用场景,又不会引入无关标记干扰反射逻辑。
内容的提问来源于stack exchange,提问作者T.Todua
相关产品推荐
相关产品推荐

