Type.GetMember получает только члены из enum, а не из объекта

Я использую Type.GetMember получить enum член. И когда мое значение enum Equals, Возвращает Equals метод, который наследуется от объекта. Итак, как я могу получить только член перечисления, а не члены из объекта.

Enum

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 ответа

Вам необходимо использовать флаг привязки:

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

Или просто использовать GetField:

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

Вы можете использовать привязку флага DeclaredOnly,

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

Из msdn (DeclaredOnly):

Указывает, что должны рассматриваться только члены, объявленные на уровне иерархии предоставленного типа. Унаследованные члены не рассматриваются.

Почему ты не можешь просто использовать

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

если я правильно понимаю ваш вопрос.

Другие вопросы по тегам