使用反射确定事件是否是静态的

本文关键字:是否是 静态 事件 反射 | 更新日期: 2023-09-27 18:26:19

我有一个System.Reflection.EventInfo对象,我想知道这个对象描述的事件是否是静态的。与System.Reflection.MethodInfo不同,EventInfo没有IsStatic属性来告诉我需要什么。那么,我如何在C#中做到这一点呢?

此外,如果我有一个MemberInfo对象来描述我的类的某个成员(可以是属性、方法、字段等),我如何确定这个成员是否是静态的?唯一的方法是将我的MemberInfo对象强制转换为所需的类型(例如,如果这是一个方法,则转换为MethodInfo),然后检查该成员是否是静态的吗?

使用反射确定事件是否是静态的

一个Event在声明时会变成一个特殊的方法,类型为delegate,带有AddRemove方法。

您可以做的是检查正在生成的Add方法,看看它是否是static:

var isStaticEvent = eventInfo.GetAddMethod().IsStatic;