Exemple #1
0
        public void ConfigureContainer(ContainerBuilder builder)
        {
            builder.Register(ctx => new MapperConfiguration(cfg => cfg.AddProfile(typeof(AutoMapperProfile))));
            builder.Register(ctx => ctx.Resolve <MapperConfiguration>().CreateMapper()).As <IMapper>();

            builder.Register <ILogger>((c, p) =>
            {
                return(new LoggerConfiguration()
                       .ReadFrom.Configuration(Configuration)
                       .Enrich.FromLogContext()
                       .WriteTo.Console()
                       .WriteTo.File($"/logs/log-.log", rollingInterval: RollingInterval.Day)
                       .CreateLogger());
            }).SingleInstance();

            builder.Register(c => Configuration)
            .As <IConfigurationRoot>()
            .SingleInstance();

            builder.RegisterType <AppSettings>()
            .SingleInstance();

            builder.RegisterType <HttpContextAccessor>()
            .As <IHttpContextAccessor>()
            .SingleInstance();

            builder.RegisterType <ActionContextAccessor>()
            .As <IActionContextAccessor>()
            .SingleInstance();

            builder.RegisterType <UrlHelperFactory>()
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();

            builder.RegisterType <ClientDbContext>()
            .WithParameter("options", DbContextOptionsFactory.GetClientDbContextOptions())
            .WithParameter("config", Configuration)
            .InstancePerLifetimeScope();

            builder.RegisterType <ManagementDbContext>()
            .WithParameter("options", DbContextOptionsFactory.GetManagementDbContextOptions())
            .WithParameter("config", Configuration)
            .InstancePerLifetimeScope();

            builder.RegisterType <UserContext>()
            .InstancePerLifetimeScope();

            builder.RegisterType <EmailBuilder>()
            .PropertiesAutowired()
            .InstancePerLifetimeScope();

            builder.RegisterType <EmailService>()
            .AsImplementedInterfaces()
            .PropertiesAutowired()
            .InstancePerLifetimeScope();

            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(Clients.Repositories.BaseRepository)))
            .Where(t => t.IsSubclassOf(typeof(Clients.Repositories.BaseRepository)))
            .PropertiesAutowired()
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();

            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(Management.Repositories.BaseRepository)))
            .Where(t => t.IsSubclassOf(typeof(Management.Repositories.BaseRepository)))
            .PropertiesAutowired()
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();

            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(BaseService)))
            .Where(t => t.IsSubclassOf(typeof(BaseService)))
            .PropertiesAutowired()
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();
        }