private static IServiceCollection AddModules(this IServiceCollection services, IConfiguration config, IHostAssemblyProvider hostAssemblyProvider) { var modules = new ModuleLoader(hostAssemblyProvider).GetModules(); modules.ToList().ForEach(module => { services.AddMediatR(module.Assembly); services.AddValidatorsFromAssembly(module.Assembly); services.AddAutoMapper(module.Assembly); services = module.RegisterServices(services, config); }); return(services); }
public ModuleLoader(IHostAssemblyProvider hostAssemblyProvider) { _hostAssemblyProvider = hostAssemblyProvider; }
public static IServiceCollection AddApplicationLayer(this IServiceCollection services, IConfiguration config, IHostAssemblyProvider hostAssemblyProvider = null) { if (hostAssemblyProvider is null) { hostAssemblyProvider = new HostAssemblyProvider(); } return(services .AddModules(config, hostAssemblyProvider) .AddMediatR(CurrentAssembly) .AddAutoMapper(CurrentAssembly) .RegisterBehavior(typeof(LoggingBehavior <,>)) .RegisterBehavior(typeof(AuthorizationBehavior <,>)) .RegisterBehavior(typeof(ValidationBehavior <,>)) .AddValidatorsFromAssembly(CurrentAssembly) .AddTransient <IDbConnectionFactory, SqlServerConnectionFactory>()); }