Click here to Skip to main content
Click here to Skip to main content

Basic Events Out Of The Box

, 24 Jan 2011
Rate this:
Please Sign up or sign in to vote.
Use simple events the same way you call a method

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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

George Nairooze
Team Leader Link Development
Egypt Egypt
No Biography provided
Follow on   Twitter

Comments and Discussions

 
General[My vote of 1] Better solutions PinmemberJP van Mackelenbergh25-Jan-11 21:06 
GeneralI think a much better way would be to use Mediator pattern and WeakEvent subscription PinmvpSacha Barber25-Jan-11 0:00 
GeneralMore like a tip/trick PinmemberSlacker00724-Jan-11 1:30 
GeneralWhy not use Generic EventArgs instead, TData could be any type u wish to embed into event args Pinmemberpagal_punnu23-Jan-11 14:42 
GeneralRe: Why not use Generic EventArgs instead, TData could be any type u wish to embed into event args PinmemberGeorge Nairooze24-Jan-11 23:09 
GeneralRe: Why not use Generic EventArgs instead, TData could be any type u wish to embed into event args PinmemberKenJohnson25-Jan-11 23:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web03 | 2.8.140721.1 | Last Updated 25 Jan 2011
Article Copyright 2011 by George Nairooze
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid