/// <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()); }
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)); }
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)); }
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); }