示例#1
0
        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)"));
        }
示例#2
0
        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");
        }