Определите, является ли событие статическим, используя отражение

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

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

1 ответ

Решение

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

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

var isStaticEvent = eventInfo.GetAddMethod().IsStatic;
Другие вопросы по тегам