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

编写高质量代码改善C#程序的157个建议——建议41:实现标准的事件模型

2015-08-15 20:36 603 查看
建议41:实现标准的事件模型

上一建议中,我们实现了一个带事件通知的文件传输类FileUploader。虽然已经满足需求,但却不符合C#的编码规范,查看EventHandler的原型声明:

public delegate void EventHandler(object sender, EventArgs e);


我们应该知道微软为事件模型定义的几个规范:

委托类型的名称已EventHandler结束;

委托原型返回值为void;

委托原型具有两个参数:sender表示事件触发者,e表示事件参数;

事件参数的名称以EventArgs结束。

为了将FileUploader修改为符合C#的编程规范,首先需要提供一个FileUploadedEventArgs类来保存进度信息:

class FileUploadedEventArgs : EventArgs
{
public int FileProgress { get; set; }
}

class FileUploader
{
public event EventHandler<FileUploadedEventArgs> FileUploaded;

public void Upload()
{
FileUploadedEventArgs e = new FileUploadedEventArgs() { FileProgress = 100 };
while (e.FileProgress > 0)
{
          //传输代码,省略
e.FileProgress--;
if (FileUploaded != null)
{
FileUploaded(this, e);
}
}
}
}


调用代码:

static void Main(string[] args)
{
FileUploader f1=new FileUploader();
f1.FileUploaded += f1_FileUploaded;
       f1.Upload();
}

static void f1_FileUploaded(object sender, FileUploadedEventArgs e)
{
Console.WriteLine(e.FileProgress);
}


转自:《编写高质量代码改善C#程序的157个建议》陆敏技
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: