Пример #1
0
        public void Both_params_are_supplied_through_factory()
        {
            // Arrange
            var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build();
            var typeWithParameterlessCtor          = new TypeWithParameterlessCtor();
            var typeWithCtorWithOneDependencyParam =
                new TypeWithCtorWithOneDependencyParam(
                    new TypeWithParameterlessCtor()
                    );

            // Act
            var create = container.Resolve <Func <
                                                TypeWithParameterlessCtor,
                                                TypeWithCtorWithOneDependencyParam,
                                                TypeWithCtorWithTwoDependencyParams> >();
            var instance = create(
                typeWithParameterlessCtor,
                typeWithCtorWithOneDependencyParam);

            // Assert
            instance.Should().NotBeNull();
            instance.TypeWithParameterlessCtor.Should().BeSameAs(typeWithParameterlessCtor);
            instance.TypeWithCtorWithOneDependencyParam
            .Should()
            .BeSameAs(typeWithCtorWithOneDependencyParam);
        }
 public TypeWithCtorWithTwoDependencyParams(
     TypeWithParameterlessCtor typeWithParameterlessCtor,
     TypeWithCtorWithOneDependencyParam typeWithCtorWithOneDependencyParam)
 {
     TypeWithParameterlessCtor          = typeWithParameterlessCtor;
     TypeWithCtorWithOneDependencyParam = typeWithCtorWithOneDependencyParam;
 }
Пример #3
0
 public TypeWithCtorWithTwoDependencyParamsOfSameType(
     TypeWithParameterlessCtor typeWithParameterlessCtor,
     TypeWithCtorWithOneDependencyParam typeWithCtorWithOneDependencyParam0,
     TypeWithCtorWithOneDependencyParam typeWithCtorWithOneDependencyParam1)
 {
     TypeWithParameterlessCtor           = typeWithParameterlessCtor;
     TypeWithCtorWithOneDependencyParam0 = typeWithCtorWithOneDependencyParam0;
     TypeWithCtorWithOneDependencyParam1 = typeWithCtorWithOneDependencyParam1;
 }
        public void Overrides_only_param_of_ctor_of_product_type()
        {
            // Arrange
            var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build();
            var typeWithParameterlessCtor = new TypeWithParameterlessCtor();

            // Act
            var create = container.Resolve <Func <
                                                TypeWithParameterlessCtor,
                                                TypeWithCtorWithTwoDependencyParams> >();
            var instance = create(typeWithParameterlessCtor);

            // Assert
            instance.TypeWithCtorWithOneDependencyParam
            .TypeWithParameterlessCtor
            .Should().NotBeSameAs(typeWithParameterlessCtor);
        }
Пример #5
0
        public void One_param_of_another_type_creates_instance()
        {
            // Arrange
            var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build();
            var param0    = new TypeWithParameterlessCtor();

            // Act
            var create = container.Resolve <Func <
                                                TypeWithParameterlessCtor,
                                                TypeWithCtorWithTwoDependencyParamsOfSameType> >();
            var instance = create(param0);

            // Assert
            instance.Should().NotBeNull();
            instance.TypeWithParameterlessCtor.Should().BeSameAs(param0);
            instance.TypeWithCtorWithOneDependencyParam0.Should().NotBeNull();
            instance.TypeWithCtorWithOneDependencyParam1.Should().NotBeNull();
        }
Пример #6
0
        public void Produces_same_instance_of_product_for_same_args()
        {
            // Arrange
            var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build();

            container.RegisterType <TypeWithCtorWithTwoDependencyParams>(new ContainerControlledLifetimeManager());

            var autofactory0 = container.Resolve <Func <
                                                      TypeWithParameterlessCtor,
                                                      TypeWithCtorWithTwoDependencyParams> >();

            // Act
            var factoryArgument = new TypeWithParameterlessCtor();
            var product0        = autofactory0(factoryArgument);
            var product1        = autofactory0(factoryArgument);

            // Assert
            product0.Should().BeSameAs(product1);
        }
Пример #7
0
 public TypeWithCtorWithOneDependencyParam(TypeWithParameterlessCtor typeWithParameterlessCtor)
 {
     TypeWithParameterlessCtor = typeWithParameterlessCtor;
 }