类型.GetMember只能从enum中获取成员,不能从object中获取成员
本文关键字:获取 成员 object 不能 enum GetMember 类型 | 更新日期: 2023-09-27 18:11:36
我使用Type.GetMember
来获取enum
成员。当枚举值为Equals
时。它返回从对象继承的Equals
方法。那么我怎么能只检索enum成员而不检索object的成员呢?
Enum
enum MyEnum{
Equals,
NotEquals
}
MemberInfo[] member = typeof(MyEnum).GetMember("Equals");
//Returns both Equals method from object and also the member from enum.
那么我怎么能从enum
单独得到Equals
呢?
你需要使用一个绑定标志:
MemberInfo[] member = typeof(MyEnum).GetMember("Equals", BindingFlags.DeclaredOnly);
或者直接使用GetField
:
FieldInfo member = typeof(MyEnum).GetField(BindingFlags.Static | BindingFlags.Public);
您可以使用bindingflag DeclaredOnly
。
MemberInfo[] member = typeof(MyEnum).GetMember("Equals", BindingFlags.DeclaredOnly);
From msdn (DeclaredOnly):
指定只考虑在所提供类型的层次结构级别上声明的成员。不考虑继承的成员。
为什么不能直接使用
Enum.Parse(typeof(MyEnum), "Equals");
如果我理解正确的话。