沙加
致力于.Net开发,AJAX技术
博客园
首页
新随笔
联系
订阅
管理
随笔 - 51 文章 - 0 评论 - 210 trackbacks - 6
<
2007年12月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
严正声明 : 本站文章转载请注明出处.
与我联系
发短消息
搜索
留言簿
(11)
给我留言
查看留言
我参加的小组
Visual Studio
.NET 3.x
javascript
WinForms
Debug 探索团队小组
CLR基础研究小组
成都.NET俱乐部
单元测试
北京.NET俱乐部博客园小组
我的标签
算法
(4)
8皇后
(2)
javascript
(2)
数据库主键
(1)
进制转换
(1)
主键生成器
(1)
联表查询
(1)
StringTemplate
(1)
模版引擎
(1)
静态构造函数
(1)
更多
随笔分类
.Net开发技巧系列(11)
.NET相关(15)
Atlas学习笔记(1)
JAVA
Javascript(2)
PHP开发心得(1)
雕虫小技(4)
模版引擎(1)
算法研究(4)
我翻译的文档(2)
杂七杂八(7)
随笔档案
2008年11月 (1)
2008年10月 (1)
2008年8月 (4)
2008年7月 (1)
2008年6月 (4)
2008年5月 (3)
2008年4月 (1)
2008年3月 (2)
2008年2月 (3)
2008年1月 (1)
2007年12月 (6)
2007年11月 (5)
2007年10月 (4)
2007年9月 (1)
2007年8月 (1)
2007年7月 (1)
2007年4月 (1)
2006年4月 (4)
2006年3月 (7)
Atlas相关
积分与排名
积分 - 58801
排名 - 800
阅读排行榜
1. VS2005运行速度优化心得(5253)
2. 在ASP.NET中防止注入攻击[翻译](5175)
3. 给Repeater的数据绑定添加智能感知(3652)
4. .Net下的分布式缓存--从Discuz!NT的缓存设计谈起[原创](3545)
5. 项目工作杂感(3103)
理解事件的使用
俺理解的事件就是一个强类型的代理. 在类的内部引发事件,然后调用“宇宙”内的一个方法(它并不知道来自于哪进而),并传进去一个参数,告诉它究竟发生了什么.
所有关心这个事件的对象可以订阅该事件,并把相应的处理方法绑定到这个事件. 在事件发生后这些方法就会被自动执行,而不需要事件源来手动调用, 事件源也不需要与提供该方法的对象发生关联.
一个实例, 我们在照片产生的时候为它打上一个时间戳, 而PhotoManager自已不想干这个活,把它交给了PhotoMonitor来完成 :)
using
System;
using
System.Collections.Generic;
using
System.Text;
namespace
EventTest
{
public
class
PhotoManager
{
public
static
event
EventHandler
<
PhotoInsertedEventArgs
>
PhotoInserted;
public
PhotoManager()
{
PhotoManager.PhotoInserted
+=
new
EventHandler
<
PhotoInsertedEventArgs
>
(PhotoMonitor.AddDate);
}
public
void
InsertPhoto()
{
Photo photo
=
new
Photo();
photo.Title
=
"
Darkangel
"
;
OnPhotoInserted(photo);
Console.WriteLine(
"
A photo is created!!!
"
);
Console.WriteLine(
"
The created date is :
"
);
Console.WriteLine(photo.CreateDate);
}
protected
static
void
OnPhotoInserted(Photo p)
{
if
(PhotoInserted
!=
null
)
{
PhotoInsertedEventArgs e
=
new
PhotoInsertedEventArgs(p);
PhotoInserted(
null
, e);
}
}
}
public
class
Photo
{
private
string
title;
public
string
Title
{
get
{
return
title; }
set
{ title
=
value; }
}
private
DateTime createDate;
public
DateTime CreateDate
{
get
{
return
createDate; }
set
{ createDate
=
value; }
}
}
public
class
PhotoInsertedEventArgs : EventArgs
{
public
PhotoInsertedEventArgs(Photo p)
{
this
.insertedPhoto
=
p;
}
private
Photo insertedPhoto;
public
Photo InsertedPhoto
{
get
{
return
insertedPhoto; }
set
{ insertedPhoto
=
value; }
}
}
public
static
class
PhotoMonitor
{
public
static
void
AddDate(
object
sender, PhotoInsertedEventArgs e)
{
e.InsertedPhoto.CreateDate
=
DateTime.Now;
}
}
}
测试代码:
using
System;
using
System.Collections.Generic;
using
System.Text;
using
NUnit.Framework;
using
EventTest;
namespace
TestLib
{
[TestFixture]
public
class
EventTestFixture
{
[Test]
public
void
PhotoInsertedEventTest()
{
PhotoManager manager
=
new
PhotoManager();
manager.InsertPhoto();
Assert.IsTrue(
true
);
}
}
}
posted on 2007-12-21 17:34
沙加
阅读(295)
评论(6)
编辑
收藏
网摘
所属分类:
.Net开发技巧系列
FeedBack:
#1楼
2008-02-07 15:27
seek
public static event EventHandler
PhotoInserted;
为何不用
public static event EventHandler PhotoInserted;呢?
回复
引用
查看
#2楼
2008-02-07 15:35
seek
e.InsertedPhoto.CreateDate = DateTime.Now;
CreateDate
明明是Photo类的方法,怎么在PhotoInsertedEventArgs里调用呢?
初学事件。还请指教!
回复
引用
查看
#3楼
[
楼主
] 2008-02-07 19:30
沙加
@seek
那个也是可以的,但在2.0中用这个泛型的似乎更好一些,.
PhotoInsertedEventArgs是一个自定义的事件参数,它有一个类型为Photo的公开属性. e.InsertedPhoto.CreateDate = DateTime.Now; 是给这个照片对象的属性赋值.
回复
引用
查看
#4楼
2008-02-16 23:01
seek
[TestFixture]//这个特性是干吗的?
public class EventTestFixture
{
[Test]//还有这个?
public void PhotoInsertedEventTest()
{
PhotoManager manager = new PhotoManager();
manager.InsertPhoto();
Assert.IsTrue(true);//这句也不懂....
}
}
希望作者能给予解释,再次感谢!
回复
引用
查看
#5楼
2008-02-16 23:21
seek
PhotoInsertedEventArgs类的意义还是没有看出来在哪里?
回复
引用
查看
#6楼
[
楼主
]
2008-02-17 15:33
沙加
@seek
[Test] 表明这是一个NUnit的测试方法.
PhotoInsertedEventArgs 用来封装照片插入的事件参数,告诉“宇宙”里面关心这个事件的人是哪张照片,订阅了这个事件的人就知道了.
回复
引用
查看
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
人才
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
Google站内搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
相关文章:
相关链接:
所属分类的其他文章:
C#中的String类型
静态构造函数的理解
显示文章列表时同时显示作者的处理技巧
生成大小写字母加数字混合ID与自定义进制转换
用JS计算两个日期之间有多少个休息日
给Repeater的数据绑定添加智能感知
团队开时的解决方案建立技巧
理解事件的使用
照片生成缩略图时的尺寸计算
解决一个泛型转换的问题
最新IT新闻:
Silverlight 2 SDK中文版发布
[译稿]微软将 jQuery IntelliSense整合到Visual Studio
微软:不裁员也不削减研发开支
2008年11月22日科技博客精选
诺基亚将支持Lotus Notes 和黑莓争夺市场