C 反射事件

2021-04-26 04:36:54 字數 1045 閱讀 4778

反射出事件列表的方法

如果是 自己寫的類直接反射成員就可以獲取到委託集合了

例如public class test

我們在**中寫

private void button1_click(object sender, eventargs e));}

}}void _testevent_ok1()

void _testevent_ok2()

這樣我們可以靈活的獲取繫結的事件,並且呼叫。

雖然有點違背了設計。但有時候還是有點用的。

下面是winforn控制項的獲取

private void button1_click(object sender, eventargs e));}

}         

}void _picturebox_click1(object sender, eventargs e)

void _picturebox_click2(object sender, eventargs e)

一般來說控制項事件前加個 event ..例如 doubleclick事件 前加個event 用eventdoubleclick來獲取..

///

/// 物件

/// 事件名

/// 委託列

public delegate getobjecteventlist(object p_object, string p_eventname)

object _fieldvalue = _field.getvalue(p_object);

if (_fieldvalue != null && _fieldvalue is delegate)

return null;

}///

/// 物件

/// 事件名 eventclick eventdoubleclick

/// 委託列

public delegate getobjecteventlist(control p_control, string p_eventname)

}return null;

}

c 反射呼叫事件

這裡有個例子 這個例子反射呼叫的是靜態的action。這裡最後寫了三點需要注意的,我覺得很對。委託其實是個字段,要用getfield來獲取 這裡的第乙個答案。stackoverflow裡的,這個就是反射呼叫事件。主要差別在反射的篩選條件 typeof myclass getfields bindin...

C 反射呼叫私有事件

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

C 利用反射動態繫結事件

大多數時都是強型別,直接繫結事件,但這種耦合關係太強,在動態呼叫dll的時候就不太合適了。以下是動態繫結和直接繫結的乙個簡單例項 1 using system 2using system.collections.generic 3using system.linq 4using system.tex...