public static AssembliesRecorder RegisterFluentValidator(this AssembliesRecorder recorder)
        {
            var builder = recorder.ContainerBuilder;

            builder
            .RegisterAssemblyTypes(recorder.Assemblies.ToArray())
            .AsClosedTypesOf(typeof(IValidator <>))
            .AsImplementedInterfaces()
            .SingleInstance();

            return(recorder);
        }
        public static AssembliesRecorder RegisterAutoMapper(this AssembliesRecorder recorder)
        {
            var builder = recorder.ContainerBuilder;

            builder
            .SingleFactoryAsSelf(context =>
                                 new MapperConfiguration(cfg => cfg.AddProfiles(context.Resolve <IEnumerable <Profile> >())))
            .SingleFactoryAsSelf(context => context.Resolve <MapperConfiguration>().CreateMapper());

            builder
            .RegisterAssemblyTypes(recorder.Assemblies.ToArray())
            .AssignableTo <Profile>()
            .Except <MapperConfigurationExpression>()
            .Where(type => !type.IsNestedPrivate)
            .As <Profile>()
            .SingleInstance();

            return(recorder);
        }
 public static ContainerBuilder ToContainerBuilder(this AssembliesRecorder recorder)
 {
     return(recorder.ContainerBuilder);
 }
 public static AssembliesRecorder RegisterAssembliesModules(this AssembliesRecorder recorder)
 {
     recorder.ContainerBuilder.RegisterAssemblyModules(recorder.Assemblies.ToArray());
     return(recorder);
 }
        public static AssembliesRecorder AddAssembly <T>(this AssembliesRecorder recorder)
        {
            recorder.Assemblies.Add(typeof(T).GetAssembly());

            return(recorder);
        }