C# 通过反射获取事件参数
我不知道如何获取事件的参数类型 例如,我只能看到使用MethodInfo获取参数,但我有EventInfo或FieldInfo 我想要的是能够从中获得“布尔值”: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,也需要先进行方法绑定,这意味着测试套件只需在初始化时确认事件具有特
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是泛型委托类型的类型参数。