Introduction
When working on one on my recent projects, I needed to fire an event that contains a message. I've looked for any EventArgs
that contain a string
property to be used as a message container, but I didn't find anything simple. So, I decided to create a set of EventArgs
that contains properties I need for almost every project and put them in a separate library, so it can be reused. Then I got the idea, why not declare the event itself and its firing method in that library to be able to fire the events from my project the same way I call a method. That's the idea behind Basic Events project, out of the box usage of events containing common properties.
The Attached Code
The attached code contains a solution with the following projects:
BasicEvents
: The main library that contains the EventArgs
classes and the Events
class with events defined.
DMO_BLL
: A business tier class to demo BasicEvents
library.
DMO_EXE
: A console application that uses the DMO_BLL
class.
Using the Code
In your class that you wish to fire the event
Declare private
or protected
attribute of Events
class.
private BasicEvents.Events _events = new BasicEvents.Events();
Declare a public
read only property to return the Events
class instance that all the events will be fired from.
public BasicEvents.Events Events
{
get
{
return _events;
}
}
Where you want to fire one of the basic events, just call the related method:
_events.FireMessageReceived(this, "Demo");
Fire events methods:
FireMessageReceived
: fires MessageReceived
event.
FireTimeMessageReceived
: fires TimeMessageReceived
event.
FireExceptionReceived
: fires ExceptionReceived
event.
In your presentation tier, or the class where you intend to handle the events fired:
Provided that you make instance of the business tier library:
DMO_BLL.DMO _dmo = new DMO_BLL.DMO();
Register the event handlers:
_dmo.Events.MessageReceived +=
new BasicEvents.Events.MessageReception(Events_MessageReceived);
Create the Events_MessageReceived
method:
void Events_MessageReceived(object sender, BasicEvents.MessageEventArgs e)
{
Console.WriteLine(e.Message);
}
Run the business method in the business tier library:
_dmo.DemoMethod();
Notes
The source code can be viewed under codeplex.com by clicking here.