using System.Collections.Generic;
namespace ConsoleApplication13
public static void Main(string[] args)
Customer [] customers=new Customer [6];
List<string> FirstNameList = new List<string> { "Joe", "Jane", "Jack", "Jeff", "Jill", "John" };
List<string> LastNameList = new List<string> { "Smith", "Jones", "Jump", "Run", "Hill", "Winstone" };
for (int i = 0; i <= 5;i++ )
customers[i] = new Customer();
customers[i].FirstName = FirstNameList[i];
customers[i].LastName = LastNameList[i];
Queue <Customer > customer = new Queue <Customer>();
foreach (Customer c in customers )
foreach (Customer c in customers )
table.TableEvent += (customer.Dequeue ()).TableOpenMethod;
table.tableOpen(c.FirstName, c.LastName);
c.MealChangeEvent += MealChangeMethod;
foreach (string m in c.MealList)
Console.WriteLine("Everyone is full!");
public static void MealChangeMethod(object sender, MealChangeEventArgs e)
Console.WriteLine(" {0} {1} is having {2}.", e.FirstName , e.LastName, e.Meal );
public string FirstName { get; set; }
public string LastName { get; set; }
public string[] MealList = Enum.GetNames(typeof(Meals));
public string Meal { get; set; }
public void TableOpenMethod(object sender, TableEventArgs e)
Console.WriteLine(" {0} {1} got a table", e.FirstName,e.LastName );
public event MealChangeEventHandler MealChangeEvent;
public void MealChange(Customer c)
if (MealChangeEvent != null)
MealChangeEvent(this, new MealChangeEventArgs(c.FirstName ,c.LastName ,c.Meal ));
public event TableEventHandeler TableEvent;
public void tableOpen(string fname,string lname)
Console.WriteLine("Table is Open!");
TableEvent(this, new TableEventArgs(fname,lname));
public delegate void TableEventHandeler(object source, TableEventArgs e);
public delegate void MealChangeEventHandler(object source,MealChangeEventArgs e);
public class TableEventArgs : EventArgs
public string FirstName { get; set; }
public string LastName {get;set;}
public TableEventArgs(string Fname,string Lname)
public class MealChangeEventArgs :EventArgs
public string FirstName { get; set; }
public string LastName { get; set; }
public string Meal { get; set; }
public MealChangeEventArgs(string Fname, string Lname,string meal)