[英]Get event parameters via reflection
我无法弄清楚如何获取事件的参数类型。
例如,我只能看到使用MethodInfo来获取参数,但我有一个EventInfo或FieldInfo。
我想要的是能够从这里得到'布尔':
Public Event EventName(ByVal sender As Object, ByVal value As Boolean)
我理论上可以尝试类似GetRaiseMethod()的东西,但这不起作用(因为该方法根据此链接返回null),即使它确实需要首先进行方法绑定,这意味着只需要确认测试套件事件在初始化时具有某个类型参数。
有任何想法吗?
假设事件EventName
在EventName
类中DeclaringClass
且事件至少包含参数,您可以获得第二个参数的类型,如下所示。 否则你可能会收到一个例外。
Type secondEventHandlerParameterType =
typeof(DeclaringClass).
GetEvent("EventName").
EventHandlerType.
GetMethod("Invoke").
GetParameters()[1].
ParameterType;
我尝试使用Daniel解决方案,但在我的PCL中获得了TypeInitializationException
异常。
以下代码对我有用,看起来更清晰:
Type secondEventHandlerParameterType =
typeof(DeclaringClass).
GetEvent("EventName").
EventHandlerType.
GenericTypeArguments.
First();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.