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");
если я правильно понимаю ваш вопрос.