该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明! 陈希章原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/06/11/1501621.html原文标题:利用反射绑定事件处理程序(C#) 原文发表:2009/6/11 11:18:00 |
传统的写法:强类型的情况下
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Customer c = new Customer();
c.OnChange += new EventHandler(c_OnChange);
c.Change();
Console.Read();
}
static void c_OnChange(object sender, EventArgs e)
{
Console.WriteLine("事件被触发了");
}
}
class Customer
{
public event EventHandler OnChange;
public void Change()
{
if (OnChange != null)
OnChange(this, null);
}
}
}
值得了解的另外一个写法
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Customer c = new Customer();
EventInfo evt = c.GetType().GetEvent("OnChange",
BindingFlags.NonPublic | BindingFlags.Instance
| BindingFlags.Public
);
evt.AddEventHandler(c, new EventHandler(c_OnChange));
c.Change();
Console.Read();
}
static void c_OnChange(object sender, EventArgs e)
{
Console.WriteLine("事件被触发了");
}
}
class Customer
{
public event EventHandler OnChange;
public void Change()
{
if (OnChange != null)
OnChange(this, null);
}
}
}
作者:陈希章 出处:http://blog.youkuaiyun.com/chen_xizhang 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |