c 反射呼叫事件

2021-10-25 19:40:25 字數 1004 閱讀 2787

這裡有個例子 。這個例子反射呼叫的是靜態的action。這裡最後寫了三點需要注意的,我覺得很對。「委託其實是個字段,要用getfield來獲取」。

這裡的第乙個答案。stackoverflow裡的,這個就是反射呼叫事件。

主要差別在反射的篩選條件

typeof(myclass).getfields(bindingflags.nonpublic | bindingflags.instance)

對於事件:public event eventhandlerevent1;

要用(bindingflags.nonpublic | bindingflags.instance)篩選,

而用(bindingflags.public | bindingflags.instance)找不到。

(當然,用getevent()可以,但是對於eventinfo,我沒找到怎麼呼叫它。)

我的**:

public

class

myclass

}myeventargs myeventargs =

newmyeventargs()

;//遍歷呼叫。考慮有多個事件。如果只有乙個,上面直接根據名字找到,呼叫乙個即可

foreach

(var fi in listofevent)

); invokemethod.

invoke

(tempv,

newobject

);}catch

(exception ex)}}

private

voidf1(

object sender,

myeventargs str)

}public

class

myeventargs

:eventargs

}

用事件呼叫子窗體

今天學到了乙個很有用的知識點,多個窗體呼叫子窗體時,讓子窗體和父窗體降低耦合度。同時子窗體的修改還可以及時反饋到父窗體。如下 為了實現這個例子,你需要準備2個視窗,乙個叫mainform,上面至少需要乙個richtextbox,兩個工具欄按鈕。另乙個叫 mydialog 的子視窗,上面有乙個 tex...

C 反射呼叫私有事件

假設有 a 類的 定義了乙個私有的事件 class aremove 通過反射可以拿到 a 的事件 fx 但是無法直接新增事件 var eventinfo typeof a getevent fx bindingflags.instance bindingflags.nonpublic 如果這時直接呼...

正確呼叫事件處理程式

不管是剛接觸 c 還是已經具有多年開發經驗的大部分人會覺得事件處理很簡單,只需要把事件定義好然後在需要的時候出發它就可以了。其實這種想法是錯誤的,這裡面有很多需要注意的問題。下面這段 是大部分開發人員經常使用的定義事件處理程式的方法。public class eventdemo 上面的 中存在乙個嚴...