Usually you will register your classes in your Dependency Container of choice.
However if you really need to do it manually. Here is sample code that always ensures there is only one taxi instance (Poor Business is not going to do too well – Definitely not a scaleable business).
using System; using System.Collections.Generic; namespace Patterns.Singleton { class TaxiSchedule { static void Main() { var t1 = Taxi.GetTaxi(); var t2 = Taxi.GetTaxi(); var t3 = Taxi.GetTaxi(); var t4 = Taxi.GetTaxi(); if (t1 == t2 && t2 == t3 && t3 == t4) Console.WriteLine("They are the same!\n"); var taxi = Taxi.GetTaxi(); for (int i = 0; i < 24; i++) Console.WriteLine("Wake Up: " + taxi.NextDriver.Name); Console.ReadKey(); } } /// <summary> /// Singleton Taxi /// </summary> sealed class Taxi { static readonly Taxi instance = new Taxi(); IList<Driver> drivers; Random random = new Random(); int currentDriver = 0; private Taxi() { drivers = new List<Driver> { new Driver{ Name = "Joe" }, new Driver{ Name = "Bob" }, new Driver{ Name = "Harry" }, new Driver{ Name = "Ford" }, }; } public static Taxi GetTaxi() { return instance; } public Driver NextDriver { get { if (currentDriver >= drivers.Count) currentDriver = 0; currentDriver++; return drivers[currentDriver -1]; } } } class Driver { public string Name { get; set; } } } <span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>