Ejemplo n.º 1
0
        public void CanUseConstructedObject()
        {
            IJellybeanDispenser dispenser = new AnyJellybeanDispenser(Jellybean.Cocoa);
            SweetShop sweetShop = new SweetShop(new SweetVendingMachine(dispenser));

            Assert.AreEqual(Jellybean.Cocoa, sweetShop.DispenseJellyBean());
        }
Ejemplo n.º 2
0
        public void CanUseObjectFactoryWithSingleton()
        {
            IDependencyResolver container = new InternalDependencyResolver();
            container.AddDependency<SweetShop>(DependencyLifetime.Transient);
            container.AddDependency<SweetVendingMachine>(DependencyLifetime.Transient);

            IJellybeanDispenser instance = new AnyJellybeanDispenser(Jellybean.Orange);
            // The lambda captures the instance and uses it across multiple calls. It's a singleton
            container.AddDependency<IJellybeanDispenser>(c => instance);

            SweetShop sweetShop = container.Resolve<SweetShop>();
            SweetShop sweetShop2 = container.Resolve<SweetShop>();

            Assert.AreEqual(Jellybean.Orange, sweetShop.DispenseJellyBean());
            Assert.AreEqual(Jellybean.Orange, sweetShop2.DispenseJellyBean());

            Assert.AreNotSame(sweetShop, sweetShop2, "Root objects are equal");
            Assert.AreNotSame(sweetShop.SweetVendingMachine, sweetShop2.SweetVendingMachine, "Contained objects are equal");

            // should be same service
            Assert.AreSame(sweetShop.SweetVendingMachine.JellybeanDispenser, sweetShop2.SweetVendingMachine.JellybeanDispenser, "services are not equal");
        }
Ejemplo n.º 3
0
        public void CanUseConstructedObject()
        {
            var builder = new ContainerBuilder();
            IJellybeanDispenser instance = new AnyJellybeanDispenser(Jellybean.Cocoa);
            // use a lambda to register the instance
            builder.Register(c => instance);
            builder.Register<SweetVendingMachine>();
            builder.Register<SweetShop>();

            IContainer container = builder.Build();
            SweetShop sweetShop = container.Resolve<SweetShop>();

            Assert.AreEqual(Jellybean.Cocoa, sweetShop.DispenseJellyBean());
        }
Ejemplo n.º 4
0
        public void CanUseConstructedObject()
        {
            Container container = new Container();
            container.Register<IJellybeanDispenser>(c => new StrawberryJellybeanDispenser());
            container.Register(c => new SweetVendingMachine(c.Resolve<IJellybeanDispenser>()));
            container.Register(c => new SweetShop(c.Resolve<SweetVendingMachine>()));

            IJellybeanDispenser instance = new AnyJellybeanDispenser(Jellybean.Cocoa);
            container.Register(c => instance);

            SweetShop sweetShop = container.Resolve<SweetShop>();

            Assert.AreEqual(Jellybean.Cocoa, sweetShop.DispenseJellyBean());
        }