這裡有個例子 。這個例子反射呼叫的是靜態的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 上面的 中存在乙個嚴...