Пример #1
0
        public void BuildUpAnExistingObjectInstance()
        {
            IContainer container = CreateTarget();

            var demoInstance = new Demo(222);

            container.Register <IDemo>(demoInstance);
            ObjectToBuild otb = new ObjectToBuild();

            container.BuildUp(otb);

            // Normal property injection
            otb.Demo.Should().NotBeNull();
            otb.Demo.Should().BeSameAs(demoInstance);

            // Property injection for container insself
            otb.Container.Should().BeSameAs(container);
        }
Пример #2
0
        public void Create_container_with_serviceProvider()
        {
            IServiceProvider provider  = new TestServiceProvider();
            IContainer       container = new Container(provider);

            var theDemo = container.Resolve <IDemo>();

            theDemo.Should().NotBeNull();
            theDemo.GetId().Should().Be(666);
            theDemo.Name.Should().Be("FromServiceProvider");

            theDemo = container.ResolveAll <IDemo>().Single();
            theDemo.Should().NotBeNull();
            theDemo.GetId().Should().Be(666);
            theDemo.Name.Should().Be("FromServiceProvider");

            var demo = container.Resolve <Demo>();

            demo.Should().NotBeNull();
            demo.GetId().Should().Be(666);
            demo.Name.Should().Be("FromServiceProvider");

            var toBuild = new ObjectToBuild();

            container.BuildUp(toBuild);
            toBuild.Demo.Should().NotBeNull();
            theDemo.Should().BeSameAs(theDemo);

            toBuild.Container.Should().BeSameAs(container);
            toBuild.ServiceProvider.Should().BeSameAs(provider);

            toBuild.PrivateDemo.Should().BeNull();
            toBuild.ProtectedDemo.Should().BeNull();

            container.BuildUp(toBuild, new AttributePropertySelectionStrategy(true));
            toBuild.NoSetterDemo.Should().BeNull();
            toBuild.PrivateDemo.Should().NotBeNull();
            toBuild.ProtectedDemo.Should().NotBeNull();

            var named = container.ResolveNamed <IConvertible>("oha");

            named.Should().BeNull();
        }
Пример #3
0
        public void BuildUpAnObjectWithTheServiceProviderDependencies()
        {
            IServiceProvider provider  = new TestServiceProvider();
            IContainer       container = new Container(provider);

            var toBuild = new ObjectToBuild();

            container.BuildUp(toBuild);
            toBuild.Demo.Should().NotBeNull();

            toBuild.Container.Should().BeSameAs(container);
            toBuild.ServiceProvider.Should().BeSameAs(provider);

            toBuild.PrivateDemo.Should().BeNull();
            toBuild.ProtectedDemo.Should().BeNull();

            container.BuildUp(toBuild, new AttributePropertySelectionStrategy(true));
            toBuild.NoSetterDemo.Should().BeNull();
            toBuild.PrivateDemo.Should().NotBeNull();
            toBuild.ProtectedDemo.Should().NotBeNull();
        }