通过反射获取事件参数

Mat*_*ell 2 c# vb.net reflection

我无法弄清楚如何获取事件的参数类型.

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

我想要的是能够从这里得到'布尔':

Public Event EventName(ByVal sender As Object, ByVal value As Boolean)
Run Code Online (Sandbox Code Playgroud)

我理论上可以尝试类似GetRaiseMethod()的东西,但这不起作用(因为该方法根据此链接返回null ),即使它确实需要首先进行方法绑定,这意味着只需要确认测试套件事件在初始化时具有某个类型参数.

有任何想法吗?

Dan*_*ner 12

假设事件EventName在类中声明DeclaringClass且事件至少包含参数,您可以获得第二个参数的类型,如下所示.否则你可能会收到一个例外.

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