Archive | October 2013

Delegates, Events and Events args

In our previous post on delegate, events and Events Args we talked discussed what each is and its role in event driven programming. In this post we present the code representation of the previous post.  So without wasting too much time and keeping you waiting we immediately starting on presentation of the code based on our previous discussion.

EventArgs are used to contain the additional information that should be passed from the event to the event handler.  And to encapsulate the additional information we will extend the EventArgs class and add the information we want the doctor to know about the Patient.  To have it simple we will need the first and last name for the patient.


internal class PatientArgs : EventArgs
 {
 public PatientArgs(string firstName, string lastName)
 {
 FirstName = firstName;
 LastName = lastName;
 }
 public string FirstName { get; set; }
 public string LastName { get; set; }
 }

So far so good, huh? We need to have our Patient class now in place. Remember it is the patient who should raise the alert that he has arrived. Also its important to note the Event declaration. In my case I am using the generic delegate EventHandler<TEventArgs> which represent a method that will used to handle the event provides data.

 internal class Patient
 {
 //Event arriving
 public event EventHandler<PatientArgs> Arrived;

public void OnPatientArrived()
 {
 if (Arrived != null)
 {
 Arrived(this, new PatientArgs("", ""));
 }
 }
 }

So clients(Doctors) interested in knowing when a Patient arrives should subscribe to Arrived event, which you can simply see it done in the next snippet. So you can see clearly that Program provides an handler to the event as to when a patient arrives. So what happens is that when the patient arrived “p_Arrived” will run. Note that one of the parameter for p_Arrived is PatientArgs which carries the FirstName and LastName of the patient. You are not limited to the number of information you want passed to the Event handler in the EventArgs.


class Program
 {
 public static void p_Arrived(object sender, PatientArgs e)
 {
 Console.WriteLine(string.Format("Attending {0} {1}", e.FirstName, e.LastName));
 }
 static void Main(string[] args)
 {
 Patient p = new Patient();
 p.Arrived += p_Arrived;
 p.OnPatientArrived();
 Console.Read();
 }
 }

There you have it . Happy coding :).

%d bloggers like this: