利用反射绑定事件处理程序(C#)
利用反射绑定事件处理程序(C#)
传统的写法:强类型的情况下
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);
}
}
}
传统的写法:强类型的情况下
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);
}
}
}
最新文章
- (1-2)配置的升级 - ASP.NET从MVC5升级到MVC6
- Eclipse 打不开
- 【C语言入门教程】4.7 指针的地址分配 - mallocl(), free()
- eclipse开启断言
- PoEdu - C++阶段班【Po学校】- 第1课
- ubuntu修改文件访问权限
- webpages框架中使用Html.TextArea()在前台显示多行信息时,如何进行大小、样式的设置
- ExtJs布局之accordion,fit,auto
- The Bookcase
- 外部div自适应内部标签的高度,设置最小高度、最大高度
- jQuery Mobile里xxx怎么用呀? (事件篇)
- PHP对MySQL数据库的相关操作
- udev实现热插拔
- Windows和Office激活工具Kmsauto Net
- JAVA 编程思想第一章习题
- Binary Search Tree Learning Summary
- Django和SQLAlchemy,哪个Python ORM更好?
- find,xargs,tar有选择打包
- bzoj1935
- Struts2 核心流程
热门文章
- py库: Tesseract-OCR(图像文字识别)
- Android 组合控件
- Flex学习笔记-使用MXML和一个AS事件监听器监听事件
- 将tgz文件解压到指定目录
- Oracle查询表结果添加到另一张表中
- 机器学习进阶-目标跟踪-KCF目标跟踪方法 1.cv2.multiTracker_create(构造选框集合) 2. cv2.TrackerKCF_create(获得KCF追踪器) 3. cv2.resize(变化图像大小) 4.cv2.selectROI(在图像上框出选框)
- UI5-学习篇-5-SAP创建OData服务-Structure
- const 关键字总结
- webpack 引用vconsole
- YCSB性能测试工具使用(转)