C# 通过反射获取事件参数

C# 通过反射获取事件参数,c#,vb.net,reflection,C#,Vb.net,Reflection,我不知道如何获取事件的参数类型 例如,我只能看到使用MethodInfo获取参数,但我有EventInfo或FieldInfo 我想要的是能够从中获得“布尔值”: Public Event EventName(ByVal sender As Object, ByVal value As Boolean) 理论上,我可以尝试GetRaiseMethod()之类的方法,但这不起作用(因为该方法按照返回null),即使它返回null,也需要先进行方法绑定,这意味着测试套件只需在初始化时确认事件具有特

我不知道如何获取事件的参数类型

例如,我只能看到使用MethodInfo获取参数,但我有EventInfo或FieldInfo

我想要的是能够从中获得“布尔值”:

Public Event EventName(ByVal sender As Object, ByVal value As Boolean)
理论上,我可以尝试GetRaiseMethod()之类的方法,但这不起作用(因为该方法按照返回null),即使它返回null,也需要先进行方法绑定,这意味着测试套件只需在初始化时确认事件具有特定类型的参数


有什么想法吗?

假设在类
DeclaringClass
中声明了事件
EventName
,并且该事件至少有到个参数,则可以获得第二个参数的类型,如下所示。否则,您可能会收到一个异常

Type secondEventHandlerParameterType = 
   typeof(DeclaringClass).
   GetEvent("EventName").
   EventHandlerType.
   GetMethod("Invoke").
   GetParameters()[1].
   ParameterType;

我尝试使用Daniel解决方案,但在我的PCL中得到了
TypeInitializationException
异常

以下代码适用于我,看起来更清晰:

Type secondEventHandlerParameterType = 
   typeof(DeclaringClass).
   GetEvent("EventName").
   EventHandlerType.
   GenericTypeArguments.
   First();

此解决方案仅适用于代理类型的操作系列。GenericTypeArguments是泛型委托类型的类型参数。