【问题标题】:Determine if event is static using reflection使用反射确定事件是否为静态
【发布时间】:2014-10-12 16:50:49
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net reflection static memberinfo


    【解决方案1】:

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

    您可以做的是检查正在生成的Add 方法是否为static

    var isStaticEvent = eventInfo.GetAddMethod().IsStatic;
    

    【讨论】:

    • 谢谢。那么确定 MemberInfo 是否是静态的呢?只有在将 MemberInfo 转换为 MethodInfo、CosntructorInfo 或任何成员类型之后,我才能确定它吗?
    • @user 是的,你必须投
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    相关资源
    最近更新 更多