protected SkiAction GetNextAction()
        {
            SkiAction result = SkiAction.Quit;
            bool      done   = false;

            while (!done)
            {
                Console.WriteLine("A) Add a skier to the lift");
                Console.WriteLine("R) Remove a skier from the lift");
                Console.WriteLine("Q) Quit");
                Console.Write("Choice: ");

                switch (Console.ReadLine().ToUpper())
                {
                case "A":
                    result = SkiAction.AddSkier;
                    done   = true;
                    break;

                case "R":
                    result = SkiAction.RemoveSkier;
                    done   = true;
                    break;

                case "Q":
                    result = SkiAction.Quit;
                    done   = true;
                    break;

                default:
                    break;
                }
            }
            return(result);
        }
        public void Run()
        {
            bool done = false;

            while (!done)
            {
                DisplayStatus();
                SkiAction choice = GetNextAction();
                switch (choice)
                {
                case SkiAction.AddSkier:
                    string name;
                    do
                    {
                        Console.Write("Skier's name: ");
                        name = Console.ReadLine();
                    }while(name.Length == 0);
                    Skier newSkier = new Skier(name);
                    _theLift.Enqueue(newSkier);
                    break;

                case SkiAction.RemoveSkier:
                    if (_theLift.Count == 0)
                    {
                        Console.WriteLine("The lift is empty.");
                    }
                    else
                    {
                        Skier nextSkier = (Skier)_theLift.Dequeue();
                        Console.WriteLine("{0} has left the ski lift.",
                                          nextSkier.Name);
                    }

                    break;

                case SkiAction.Quit:
                    Console.WriteLine("Goodbye.");
                    done = true;
                    break;

                default:
                    break;
                }
            }
        }