/// <summary>
        /// Gets a service using the decorator pattern.
        /// </summary>
        /// <returns>The service instance.</returns>
        /// <param name="serviceType">The service type, typically an interface.</param>
        /// <param name="customizationFunc">A customization function, to build the 'shape' of the decorated service.</param>
        public object GetDecoratedService(Type serviceType, Func <ICreatesAutofacDecorator, ICustomizesAutofacDecorator> customizationFunc)
        {
            var builder    = new AutofacDecoratorBuilder(resolver, serviceType);
            var customizer = (IGetsService)customizationFunc(builder);

            return(customizer.GetService());
        }
Beispiel #2
0
        public void UsingInitialImplType_resolves_impl_from_resolver(IResolver resolver, ServiceImpl1 impl)
        {
            var sut = new AutofacDecoratorBuilder(resolver, typeof(IServiceInterface));

            Mock.Get(resolver)
            .Setup(x => x.Resolve(typeof(ServiceImpl1), It.IsAny <IEnumerable <Parameter> >()))
            .Returns(impl);

            var result = sut.UsingInitialImplType(typeof(ServiceImpl1));

            Assert.That(result?.Implementation, Is.SameAs(impl));
        }
Beispiel #3
0
        public void UsingInitialImpl_passes_params_to_resolver(IResolver resolver,
                                                               ServiceImpl1 impl,
                                                               Parameter[] parameters)
        {
            var sut = new AutofacDecoratorBuilder(resolver, typeof(IServiceInterface));

            Mock.Get(resolver)
            .Setup(x => x.Resolve <ServiceImpl1>(parameters))
            .Returns(impl);

            var result = sut.UsingInitialImpl <ServiceImpl1>(parameters);

            Assert.That(result?.Implementation, Is.SameAs(impl));
        }
Beispiel #4
0
        public void UsingInitialImplType_throws_exception_if_impl_type_does_not_derive_from_service(IResolver resolver)
        {
            var sut = new AutofacDecoratorBuilder(resolver, typeof(IServiceInterface));

            Assert.That(() => sut.UsingInitialImplType(typeof(DifferentImpl)), Throws.ArgumentException);
        }