public void With_Specific_Bindings() { ComponentContainer container = new ComponentContainer(); container.Bind<IBar>().To<Bar1>(); container.For<PropertyInject>().Bind<IFoo>().To<Foo1>(); container.For<PropertyInject>().Bind<IBar>().To<Bar2>(); var instance = new PropertyInject(); container.ResolveProperties(instance); Assert.NotNull(instance.Foo); Assert.IsInstanceOf<Foo1>(instance.Foo); Assert.NotNull(instance.Bar); Assert.IsInstanceOf<Bar2>(instance.Bar); }
public void After_Call_To_Resolve_Where_New_Instance_Is_Constructed_Properties_Are_Injected() { ComponentContainer container = new ComponentContainer(); container.Bind<IFoo>().To<Foo1>(); container.Bind<IBar>().To<Bar1>(); container.For<PropertyInject>().Bind<IBar>().To<Bar2>(); var instance = container.Resolve<PropertyInject>(); Assert.NotNull(instance.Foo); Assert.IsInstanceOf<Foo1>(instance.Foo); Assert.NotNull(instance.Bar); Assert.IsInstanceOf<Bar2>(instance.Bar); }
public static void Main(string[] args) { ComponentContainer container = new ComponentContainer(); container.Bind<IBar>().To<Bar>().AsTransient(); container.Bind<Foo>().ToSelf().AsSingleton(); container.For<Foo>().Bind<IBar>().To<OtherBar>().AsSingleton(); Foo foo = container.Resolve<Foo>(); Foo foo2 = container.Resolve<Foo>(); IBar bar = container.Resolve<IBar>(); Console.WriteLine("typeof(foo.Bar) : {0}", foo.Bar.GetType()); Console.WriteLine("foo == foo2 : {0}", foo == foo2); Console.WriteLine("typeof(bar) : {0}", bar.GetType()); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); }
public void WithConstructorParameter_Overrides_Specific_Bindings() { ComponentContainer container = new ComponentContainer(); Bar1 bar = new Bar1(); container.Bind<IFoo>().To<Foo1>() .AsTransient() .WithConstructorParameter("bar", bar); container.For<IFoo>().Bind<IBar>().To<Bar2>(); var obj = container.Resolve<IFoo>(); Assert.AreSame(bar, ((Foo1)obj).Bar); }
public void Specific_Binding_With_Differnt_Type_Overrides_Global_Binding() { ComponentContainer container = new ComponentContainer(); container.Bind<IBar>().To<Bar1>().AsSingleton(); container.For<Foo1>().Bind<IBar>().To<Bar2>().AsTransient(); Foo1 foo1 = container.Resolve<Foo1>(); Foo1 foo2 = container.Resolve<Foo1>(); Assert.AreNotSame(foo1.Bar, foo2.Bar); }
public void Specific_Binding_Overrides_Global_Binding() { ComponentContainer container = new ComponentContainer(); container.Bind<IBar>().To<Bar1>(); container.For<Foo1>().Bind<IBar>().To<Bar2>(); Foo1 foo = container.Resolve<Foo1>(); Assert.IsInstanceOf<Bar2>(foo.Bar); }
public void Bind_Type_As_Singleton_For_Different_Components_Injects_Different_Instances() { ComponentContainer container = new ComponentContainer(); container.For<Foo1>().Bind<IBar>().To<Bar1>().AsSingleton(); container.For<Foo2>().Bind<IBar>().To<Bar1>().AsSingleton(); Foo1 foo1 = container.Resolve<Foo1>(); Foo2 foo2 = container.Resolve<Foo2>(); Assert.AreNotSame(foo1.Bar, foo2.Bar); }