利用反射获得委托和事件以及创建委托实例和添加事件处理程序
生活随笔
收集整理的這篇文章主要介紹了
利用反射获得委托和事件以及创建委托实例和添加事件处理程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近一些都在看關于反射的內容,然后在網上大多數都是通過反射獲得類型中方法,屬性、字段這樣的文章, 但是對于如何獲得委托類型怎么去實現的卻沒有, 所以寫下這邊篇文章來讓自己以后很好的復習以及想了解的朋友做參考。
一、 利用反射獲得委托類型并創建委托實例
using System; using System.Reflection;namespace ConsoleApplication1 {public class Test{public delegate void delegateTest(string s);public void method1(string s){Console.WriteLine("Create Delegate Instance: " + s);}}class Program{static void Main(string[] args){Test test = new Test();Type t = Type.GetType("ConsoleApplication1.Test");// 因為委托類型編譯后是作為類的嵌套類型的,所以這里通過GetNestedType(String s)的方法來獲得委托類型。Type nestType = t.GetNestedType("delegateTest");MethodInfo method =test.GetType().GetMethod("method1", BindingFlags.Public | BindingFlags.Static|BindingFlags.Instance);if (method != null){// 創建委托實例Delegate method1 = Delegate.CreateDelegate(nestType, test, method);//動態調用委托實例method1.DynamicInvoke("Hello");}Console.Read();}} }
二、 利用反射獲得事件類型和綁定事件處理程序
希望這些使大家對放射有個更好的理解。
?
轉載于:https://blog.51cto.com/learninghard/1034785
總結
以上是生活随笔為你收集整理的利用反射获得委托和事件以及创建委托实例和添加事件处理程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 10.04 lucid 安
- 下一篇: OpenI部署二——转载