Type.GetMember get only members from enum and not from object

2.5k Views Asked by At

I am using Type.GetMember to get enum member. And when my enum value is Equals. It returns the Equals method which is inherited from object. So how could i retrieve only the enum member and not the members from object.

Enum

enum MyEnum{
 Equals,
 NotEquals
}

MemberInfo[] member = typeof(MyEnum).GetMember("Equals"); 
//Returns both Equals method from object and also the member from enum.

So how could i get the Equals from enum alone?

3

There are 3 best solutions below

1
On

You need to use a binding flag:

MemberInfo[] member = typeof(MyEnum).GetMember("Equals", BindingFlags.DeclaredOnly); 

Or just use GetField:

FieldInfo member = typeof(MyEnum).GetField(BindingFlags.Static | BindingFlags.Public);
1
On

You could use bindingflag DeclaredOnly.

MemberInfo[] member = typeof(MyEnum).GetMember("Equals", BindingFlags.DeclaredOnly);

From msdn (DeclaredOnly):

Specifies that only members declared at the level of the supplied type's hierarchy should be considered. Inherited members are not considered.

0
On

Why can't you just use

Enum.Parse(typeof(MyEnum), "Equals");

if I correctly understand your question.