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);
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }