Type.GetMember只从枚举中获取成员而不从对象获取成员

时间:2015-09-08 08:47:55

标签: c# types enums memberinfo

我正在使用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

3 个答案:

答案 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");

如果我正确理解你的问题。