利用反射获得委托和事件以及创建委托实例和添加事件处理程序
来源:互联网 发布:手抄报制作软件 编辑:程序博客网 时间:2024/04/28 03:27
最近一些都在看关于反射的内容,然后在网上大多数都是通过反射获得类型中方法,属性、字段这样的文章, 但是对于如何获得委托类型怎么去实现的却没有, 所以写下这边篇文章来让自己以后很好的复习以及想了解的朋友做参考。
一、 利用反射获得委托类型并创建委托实例
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(); } } }二、 利用反射获得事件类型和绑定事件处理程序
using System;using System.Reflection;namespace ConsoleApplication2{ public class Test { public event EventHandler TestEvent; public void Triggle() { if (TestEvent != null) { TestEvent(this, null); } } } class Program { static void Main(string[] args) { Test testT=new Test(); EventInfo eventinfo = typeof(Test).GetEvent("TestEvent"); if (eventinfo != null) { // 为事件动态绑定处理程序 eventinfo.AddEventHandler(testT, new EventHandler(triggleEvent)); testT.Triggle(); } Console.Read(); } public static void triggleEvent(object sender, EventArgs e) { Console.WriteLine("Event has been Triggled"); } }}希望这些使大家对放射有个更好的理解。
- 利用反射获得委托和事件以及创建委托实例和添加事件处理程序
- 委托,事件和反射
- 委托和事件实例学习
- 【C#】委托和事件实例
- JS中的事件委托和移除事件处理程序
- c# 委托和委托事件
- C#委托,事件,接口,反射和关键字
- 简单实例说明委托和事件。
- 精彩的委托和事件实例
- jQuery事件绑定和委托实例
- 委托和事件
- 委托和事件
- 委托和事件
- 委托和事件
- 委托和事件
- 事件和委托
- 委托和事件
- 事件和委托学习
- 在内核里添加yaffs2的支持
- .net学习网址
- ios开发ASIHTTPRequest-进度追踪
- Windows7更改替换cmd(powershell)字体完全方法教程
- 叹
- 利用反射获得委托和事件以及创建委托实例和添加事件处理程序
- eclipse中java环境配置
- IOS开发之ASIHTTPRequest-身份验证
- 手机芯片中的AP与BP
- 深度探索Qt窗口系统---布局篇1
- metasploit的客户端WEB攻击
- 谈谈:.Net中的序列化和反序列化
- 对象的序列化和反序列化
- ios开发之ASIHttpRequest-发送数据