簡體   English   中英

通過反射獲取事件參數

[英]Get event parameters via reflection

我無法弄清楚如何獲取事件的參數類型。

例如,我只能看到使用MethodInfo來獲取參數,但我有一個EventInfo或FieldInfo。

我想要的是能夠從這里得到'布爾':

Public Event EventName(ByVal sender As Object, ByVal value As Boolean)

我理論上可以嘗試類似GetRaiseMethod()的東西,但這不起作用(因為該方法根據此鏈接返回null),即使它確實需要首先進行方法綁定,這意味着只需要確認測試套件事件在初始化時具有某個類型參數。

有任何想法嗎?

假設事件EventNameEventName類中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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM