static void Main(string[] args) { IUnityContainer container = new UnityContainer(); ContainerMagic.RegisterElements(container); IBattery battery = container.Resolve <IBattery>(); Console.WriteLine(battery.SerialNumber()); Dial dial = container.Resolve <Dial>(); Console.WriteLine(dial.DialType()); ITuner tuner = container.Resolve <ITuner>(); IRadio radio = container.Resolve <IRadio>(new ParameterOverride("radioBattery2", battery), new ParameterOverride("radioTuner2", tuner), new ParameterOverride("radioName", "BrokenRadio")); radio.Start(); ISpeaker cheapSpeaker = container.Resolve <ISpeaker>("Cheap"); ISpeaker priceySpeaker = container.Resolve <ISpeaker>("Expensive"); cheapSpeaker.Start(); priceySpeaker.Start(); // create a dummy extension for string String a = "Je suis une vrai string"; Console.WriteLine(a + ", et en appelant MySuperExtentionMethod, ça retourne : " + a.MySuperExtentionMethod()); // string format with property, of instance variable LogItem r = new LogItem() { ItemCount = 455 }; Console.WriteLine(String.Format($"Write cache dump {r} ({r.ItemCount} items affected)")); }
public static void RegisterElements(IUnityContainer container) { var dial = new Dial("Linear"); //We RegisterInstance this object. //In other words, we tell Unity to return this object whenever the client asks for an object of type Dial. container.RegisterInstance(dial); //We RegisterType the IBattery with Battery. //We are telling Unity to create and return an object of type Battery whenever the client asks for an object of type IBattery. container.RegisterType <IBattery, Battery>(); container.RegisterType <ITuner, Tuner>(); var batteryType = typeof(IBattery); var tunerType = typeof(ITuner); container.RegisterType <IRadio, Radio>(new InjectionConstructor(batteryType, tunerType, typeof(string))); container.RegisterType <ISpeaker, CheapSpeaker>("Cheap"); container.RegisterType <ISpeaker, PriceySpeaker>("Expensive"); }