2014-10-12 3 views
2

У меня есть объект System.Reflection.EventInfo, и я хочу знать, является ли событие, описываемое этим объектом статическим или нет. В отличие от System.Reflection.MethodInfo, EventInfo не имеет IsStatic собственности, которая сообщит мне, что мне нужно. Итак, как я могу это сделать на C#?Определить, является ли событие статическим, используя отражение

Кроме того, если у меня есть объект MemberInfo, который описывает некоторый член моего класса (может быть свойство, метод, поле и т. Д.), Как определить, является ли этот элемент статическим или нет? Единственный способ сделать это, чтобы сделать мой объект MemberInfo необходимым типом (в MethodInfo, если это был метод, например), а затем проверить, является ли этот элемент статическим?

ответ

4

Event, когда объявили, под капотом превращается в специальный метод типизированных как delegate с Add и Remove методами.

Что вы можете сделать, это проверить метод Add генерируется, чтобы увидеть, если это static:

var isStaticEvent = eventInfo.GetAddMethod().IsStatic; 
+0

Спасибо. А как определить, является ли MemberInfo статическим? Могу ли я определить его только после того, как я включил MemberInfo в MethodInfo, CosntructorInfo или что-то типа члена? – user3623874

+0

@user Да, вы должны бросить –

Смежные вопросы