开箱即用的基本事件






2.50/5 (2投票s)
像调用方法一样使用简单的事件
引言
在最近的一个项目中工作时,我需要触发一个包含消息的事件。我查找了任何包含 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 上查看源代码。