我正在使用Type.GetMember
来获取enum
成员。当我的枚举值为Equals
时。它返回从object继承的Equals
方法。那么我怎么能只检索枚举成员而不是对象的成员。
枚举
enum MyEnum{
Equals,
NotEquals
}
MemberInfo[] member = typeof(MyEnum).GetMember("Equals");
//Returns both Equals method from object and also the member from enum.
那我怎么能单独从Equals
获得enum
?
答案 0 :(得分:2)
您需要使用绑定标志:
MemberInfo[] member = typeof(MyEnum).GetMember("Equals", BindingFlags.DeclaredOnly);
或者只使用GetField
:
FieldInfo member = typeof(MyEnum).GetField(BindingFlags.Static | BindingFlags.Public);
答案 1 :(得分:1)
您可以使用bindingflag DeclaredOnly
。
MemberInfo[] member = typeof(MyEnum).GetMember("Equals", BindingFlags.DeclaredOnly);
来自msdn(DeclaredOnly):
指定只应考虑在提供的类型层次结构级别声明的成员。不考虑继承的成员。
答案 2 :(得分:0)
为什么不能使用
Enum.Parse(typeof(MyEnum), "Equals");
如果我正确理解你的问题。