您的位置:首页 > 编程语言 > C#

利用反射绑定事件处理程序(C#)

2009-06-12 00:53 766 查看
该篇文章是我于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.csdn.net/chen_xizhang

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: