Определите, является ли событие статическим, используя отражение
У меня есть System.Reflection.EventInfo
объект, и я хочу знать, является ли событие, описываемое этим объектом, статическим или нет. В отличие от System.Reflection.MethodInfo
, EventInfo
не имеет IsStatic
свойство, которое скажет мне, что мне нужно. Итак, как я могу сделать это в C#?
Кроме того, если у меня есть MemberInfo
объект, который описывает некоторый член моего класса (может быть свойством, методом, полем и т. д.), как я могу определить, является ли этот член статическим или нет? Это единственный способ сделать это, чтобы бросить мой MemberInfo
объект в нужный тип (в MethodInfo
если это был метод, например), а затем проверить, является ли этот член статическим?
1 ответ
Event
, когда объявлено, под капотом превращается в специальный метод, напечатанный как delegate
с Add
а также Remove
методы.
Что вы можете сделать, это проверить Add
метод генерируется, чтобы увидеть, если это static
:
var isStaticEvent = eventInfo.GetAddMethod().IsStatic;