65.9K
CodeProject 正在变化。 阅读更多。
Home

开箱即用的基本事件

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.50/5 (2投票s)

2011 年 1 月 23 日

CPOL

2分钟阅读

viewsIcon

21166

downloadIcon

105

像调用方法一样使用简单的事件

引言

在最近的一个项目中工作时,我需要触发一个包含消息的事件。我查找了任何包含 string 属性的 EventArgs ,以便用作消息容器,但没有找到任何简单的方法。因此,我决定创建一个包含我在几乎每个项目中都需要属性的 EventArgs 集合,并将它们放在一个单独的库中,以便可以重用。然后,我想到,为什么不将事件本身及其触发方法声明在该库中,以便我可以通过调用方法的方式从我的项目中触发事件呢?这就是 Basic Events 项目背后的想法,即开箱即用包含常用属性的事件。

附带的代码

附带的代码包含一个解决方案,其中包含以下项目:

  • BasicEvents:包含 EventArgs 类和定义了事件的 Events 类的主库。
  • DMO_BLL:一个业务层类,用于演示 BasicEvents 库。
  • DMO_EXE:一个使用 DMO_BLL 类的控制台应用程序。

Using the Code

在希望触发事件的类中

声明 private protected 属性的 Events 类。

private BasicEvents.Events _events = new BasicEvents.Events();

声明一个 public 只读属性,以返回将触发所有事件的 Events 类实例。

public BasicEvents.Events Events
{
get
{
return _events;
}
}   

在想要触发其中一个基本事件的地方,只需调用相关方法即可

_events.FireMessageReceived(this, "Demo");

触发事件的方法

  • FireMessageReceived:触发 MessageReceived 事件。
  • FireTimeMessageReceived:触发 TimeMessageReceived 事件。
  • FireExceptionReceived:触发 ExceptionReceived 事件。

在您的表示层,或您打算处理触发的事件的类中

假设您创建了业务层库的实例

DMO_BLL.DMO _dmo = new DMO_BLL.DMO();

注册事件处理程序

_dmo.Events.MessageReceived += 
	new BasicEvents.Events.MessageReception(Events_MessageReceived);   

创建 Events_MessageReceived 方法

void Events_MessageReceived(object sender, BasicEvents.MessageEventArgs e)
{
Console.WriteLine(e.Message); 
}  

在业务层库中运行业务方法

_dmo.DemoMethod();  

注释

可以通过点击 这里 在 codeplex.com 上查看源代码。

© . All rights reserved.