public void CanUseConstructedObject() { IJellybeanDispenser dispenser = new AnyJellybeanDispenser(Jellybean.Cocoa); SweetShop sweetShop = new SweetShop(new SweetVendingMachine(dispenser)); Assert.AreEqual(Jellybean.Cocoa, sweetShop.DispenseJellyBean()); }
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"); }
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()); }
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()); }