public static IServiceCollection AddApplication(this IServiceCollection services) { services.AddAutoMapper(Assembly.GetExecutingAssembly()); services.AddMediatR(Assembly.GetExecutingAssembly()); services.AddTransient(typeof(IPipelineBehavior <,>), typeof(ValidationBehavior <,>)); AssemblyScanner.FindValidatorsInAssembly(Assembly.GetExecutingAssembly()).ForEach(item => services.AddScoped(item.InterfaceType, item.ValidatorType)); return(services); }
public void FindValidatorsInAssembly_When_Instructed_Should_Find_Internal_Types() { var scanner = AssemblyScanner.FindValidatorsInAssembly(GetType().Assembly, true); var results = new List <AssemblyScanner.AssemblyScanResult>(); scanner.ForEach(x => results.Add(x)); Assert.Contains(results, o => o.ValidatorType == typeof(Model1InternalValidator)); }
public void FindValidatorsInAssembly_By_Default_Should_Not_Find_Internal_Types() { var scanner = AssemblyScanner.FindValidatorsInAssembly(GetType().Assembly); var results = new List <AssemblyScanner.AssemblyScanResult>(); scanner.ForEach(x => results.Add(x)); Assert.DoesNotContain(results, o => o.ValidatorType == typeof(Model1InternalValidator)); }
/// <summary> /// Append validator services to the service collection /// </summary> /// <param name="services">Target service collection for the validator service</param> /// <returns>Service collection containing the validator service</returns> public static IServiceCollection RegisterValidators(this IServiceCollection services) { var assembly = Assembly.GetExecutingAssembly(); var scanner = AssemblyScanner.FindValidatorsInAssembly(assembly); scanner.ForEach(x => services.AddSingleton(x.InterfaceType, x.ValidatorType)); return(services); }
private static void AddValidators(IServiceCollection services, string applicationAssemblyName) { var assembly = AppDomain.CurrentDomain.Load(applicationAssemblyName); AssemblyScanner .FindValidatorsInAssembly(assembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); }
public static void RegisterFluentValidators(this ContainerBuilder builder, Assembly assembly) { AssemblyScanner.FindValidatorsInAssembly(assembly).ForEach( result => { builder.RegisterType(result.ValidatorType).As(result.InterfaceType); }); }
/// <summary> /// Adds all validators in specified assembly /// </summary> /// <param name="services">The collection of services</param> /// <param name="assembly">The assembly to scan</param> /// <param name="lifetime">The lifetime of the validators. The default is transient</param> /// <returns></returns> public static IServiceCollection AddValidatorsFromAssembly(this IServiceCollection services, Assembly assembly, ServiceLifetime lifetime = ServiceLifetime.Transient) { AssemblyScanner .FindValidatorsInAssembly(assembly) .ForEach(scanResult => services.AddScanResult(scanResult, lifetime)); return(services); }
public static void AddMediatR(this IServiceCollection services) { AssemblyScanner.FindValidatorsInAssembly(typeof(RequestValidationBehavior <,>).Assembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddTransient(typeof(IPipelineBehavior <,>), typeof(RequestValidationBehavior <,>)); services.AddMediatR(typeof(GetLatestMaterialsQuery).Assembly); }
public static void AddRbkApiCommentsModule(this IServiceCollection services) { services.RegisterApplicationServices(Assembly.GetAssembly(typeof(ICommentsService))); AssemblyScanner .FindValidatorsInAssembly(Assembly.GetAssembly(typeof(CommentEntity.Command))) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); }
public static void AdicionarValidadoresFluentValidation(this IServiceCollection services) { var assembly = AppDomain.CurrentDomain.Load("SME.AE.Aplicacao"); AssemblyScanner .FindValidatorsInAssembly(assembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); }
public static IServiceCollection AddFluentValidation(this IServiceCollection services) { AssemblyScanner .FindValidatorsInAssembly(typeof(GetPaymentQueryValidator).Assembly) .ForEach(item => services.AddScoped(item.InterfaceType, item.ValidatorType)); return(services); }
public void ConfigureServices(IServiceCollection services) { ValidatorOptions.PropertyNameResolver = CamelCasePropertyNameResolver.ResolvePropertyName; var applicationLayerAssembly = typeof(ApplicationLayerAssembly).Assembly; services.AddOptions(); services.AddMemoryCache(); services.AddLocalization(); services.Configure <ApiBehaviorOptions>(options => { options.SuppressModelStateInvalidFilter = true; }); services.AddMvcCore() .AddFormatterMappings() .AddJsonFormatters(settings => { settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); settings.DateFormatHandling = DateFormatHandling.IsoDateFormat; settings.DateParseHandling = DateParseHandling.DateTimeOffset; settings.PreserveReferencesHandling = PreserveReferencesHandling.None; settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; settings.Formatting = Formatting.Indented; settings.Converters.Add(new StringEnumConverter()); }) .AddApiExplorer() .AddCors() .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddDbContextPool <ExampleContext>(options => { options.UseSqlite(Configuration.GetConnectionString("ExampleSqlite")); //options.UseSqlServer(Configuration.GetConnectionString("ExampleSqlServer")); //options.UseInMemoryDatabase(Guid.NewGuid().ToString()); }); services.AddOpenSpecificationApi(Configuration); services.AddMiniProfiler(options => { options.RouteBasePath = "/profiler"; options.SqlFormatter = new SqlServerFormatter(); options.ShouldProfile = request => Configuration.GetSection("MiniProfiler").GetValue <bool?>("Enable") ?? true; }).AddEntityFramework(); // Os Pipelines Behaviors são executados na respectiva ordem que são adicionados no Container. services.AddTransient(typeof(IPipelineBehavior <,>), typeof(RequestPreProcessorBehavior <,>)); services.AddTransient(typeof(IPipelineBehavior <,>), typeof(DurationBehavior <,>)); services.AddTransient(typeof(IPipelineBehavior <,>), typeof(RequestValidationBehavior <,>)); services.AddMediatR(applicationLayerAssembly); AssemblyScanner .FindValidatorsInAssembly(applicationLayerAssembly) .ForEach(e => services.AddTransient(e.InterfaceType, e.ValidatorType)); }
public static void RegisterValidators(IServiceCollection services) { AssemblyScanner .FindValidatorsInAssembly(typeof(HandlersDiConfig).GetTypeInfo().Assembly) .ForEach(pair => { services.Add(ServiceDescriptor.Transient(pair.InterfaceType, pair.ValidatorType)); }); }
public static void AddValidatorsFromAssembly(IServiceCollection services, Assembly assembly) { var scanner = AssemblyScanner.FindValidatorsInAssembly(assembly); foreach (var result in scanner) { services.AddTransient(result.InterfaceType, result.ValidatorType); } }
private static void RegisterValidators(ContainerBuilder builder) { AssemblyScanner.FindValidatorsInAssembly(typeof(ThingCommand).Assembly) .ForEach( result => { builder.RegisterType(result.ValidatorType).As(result.InterfaceType).InstancePerLifetimeScope(); }); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var appSettingsSection = Configuration.GetSection("AppSettings"); services.TryAddSingleton <IResponseCompressionProvider, ResponseCompressionProvider>(); services.AddTransient <INotificationService, NotificationService>(); services.AddTransient <CryptoHelper, CryptoHelper>(); services.AddSingleton <IJwtManager, JwtManager>(); services.AddScoped <IFinancesDbContext, FinancesDbContext>(); AddValidatorsInjection(services); ConfigureAutoMapper(services); services .Configure <AppSettings>(appSettingsSection) .AddAutoMapper() .AddMediatR() .AddCors() .AddMvc().ConfigureApiBehaviorOptions(options => { options.SuppressModelStateInvalidFilter = true; }) .AddFluentValidation() .AddJsonOptions(options => { options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); const string applicationAssemblyName = "Finances.Core"; var assembly = AppDomain.CurrentDomain.Load(applicationAssemblyName); AssemblyScanner .FindValidatorsInAssembly(assembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddScoped(typeof(IPipelineBehavior <,>), typeof(ValidationBehavior <,>)); var appSettings = appSettingsSection.Get <AppSettings>(); var key = Encoding.ASCII.GetBytes(appSettings.JwtSecret); services .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.RequireHttpsMetadata = false; options.SaveToken = true; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false, RequireExpirationTime = false }; }); }
public static IServiceCollection AddBehaviorsConfig(this IServiceCollection services) { services.AddScoped(typeof(IPipelineBehavior <,>), typeof(ValidationRequestBehavior <,>)); AssemblyScanner .FindValidatorsInAssembly(Assembly.GetExecutingAssembly()) .ForEach(x => services.AddScoped(x.InterfaceType, x.ValidatorType)); return(services); }
private void InyeccionFluentValidations(IServiceCollection services) { AssemblyScanner.FindValidatorsInAssembly(Assembly.Load("Application")).ForEach(pair => { // RegisterValidatorsFromAssemblyContaing does this: services.Add(ServiceDescriptor.Scoped(pair.InterfaceType, pair.ValidatorType)); // Also register it as its concrete type as well as the interface type services.Add(ServiceDescriptor.Scoped(pair.ValidatorType, pair.ValidatorType)); }); }
private static void AddMediatr(IServiceCollection services) { var assembly = AppDomain.CurrentDomain.Load("SocialHeroes.Domain");; AssemblyScanner .FindValidatorsInAssembly(assembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddMediatR(typeof(Startup).Assembly); }
private void FluentValidationConfig() { AssemblyScanner.FindValidatorsInAssembly(Assembly.GetExecutingAssembly()) .ForEach(result => { For(result.InterfaceType) .Singleton() .Use(result.ValidatorType); }); }
public static void RegisterCommand(this IServiceCollection services) { var commandAssembly = typeof(CommandResult).GetTypeInfo().Assembly; AssemblyScanner .FindValidatorsInAssembly(commandAssembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddScoped(typeof(IPipelineBehavior <,>), typeof(CommandValidationBehavior <,>)); services.AddMediatR(typeof(CommandResult), typeof(IHandler <,>)); }
private static void RegisterApiController(IKernel kernel) { kernel.Bind <IConfigurationManager>().To <RestConfigurationManager>(); AssemblyScanner .FindValidatorsInAssembly(typeof(ApiController).Assembly) .ForEach(result => kernel.Bind(result.InterfaceType) .To(result.ValidatorType) .InRequestScope()); }
public void ConfigureFailFast(IServiceCollection services) { var applicationAssemblyName = Assembly.GetEntryAssembly().GetName().Name; var assembly = AppDomain.CurrentDomain.Load(applicationAssemblyName); AssemblyScanner .FindValidatorsInAssembly(assembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddScoped(typeof(IPipelineBehavior <,>), typeof(FailFastRequestBehavior <,>)); }
/// <summary> /// Adds all validators in specified assembly /// </summary> /// <param name="services">The collection of services</param> /// <param name="assembly">The assembly to scan</param> /// <param name="lifetime">The lifetime of the validators. The default is transient</param> /// <param name="filter">Optional filter that allows certain types to be skipped from registration.</param> /// <returns></returns> public static IServiceCollection AddValidatorsFromAssembly(this IServiceCollection services, Assembly assembly, ServiceLifetime lifetime = ServiceLifetime.Transient, Func <AssemblyScanner.AssemblyScanResult, bool> filter = null) { foreach (var scanResult in AssemblyScanner.FindValidatorsInAssembly(assembly).Where(filter ?? (_ => true))) { services.AddValidator(scanResult.ValidatorType); } return(services); }
/// <summary> /// Registra o MediatR no injetor de dependências /// </summary> /// <param name="services">Instância do injetor de dependências</param> /// <param name="configuration">Instância das configurações da aplicação</param> public static void AddMediatR(this IServiceCollection services, IConfiguration configuration) { var assemblyName = configuration.GetValue <string>("CommandSettings:Assembly"); AssemblyScanner .FindValidatorsInAssembly(Assembly.Load(new AssemblyName(assemblyName))) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddScoped(typeof(IPipelineBehavior <,>), typeof(FluentValidationMiddleware <,>)); services.AddMediatR(); }
public static IServiceCollection AddRequestValidators(this IServiceCollection services, Assembly assembly) { AssemblyScanner.FindValidatorsInAssembly(assembly) .ForEach(pair => { services.AddTransient(typeof(IValidator), pair.ValidatorType); services.AddTransient(pair.InterfaceType, pair.ValidatorType); }); services.AddTransient <IValidatorProvider, ValidatorProvider>(); return(services); }
public static IServiceCollection AddApplication(this IServiceCollection services) { AssemblyScanner.FindValidatorsInAssembly(typeof(DependencyInjection).Assembly).ForEach(item => services.AddScoped(item.InterfaceType, item.ValidatorType)); services.AddMediatR(Assembly.GetExecutingAssembly()); services.AddTransient(typeof(IPipelineBehavior <,>), typeof(LoggingBehavior <,>)); services.AddTransient(typeof(IPipelineBehavior <,>), typeof(ValidatorBehavior <,>)); services.AddTransient(typeof(IPipelineBehavior <,>), typeof(TransactionBehaviour <,>)); return(services); }
/// <summary> /// Load your modules or register your services here! /// </summary> /// <param name="kernel">The kernel.</param> private static void RegisterServices(IKernel kernel) { AssemblyScanner.FindValidatorsInAssembly(Assembly.GetAssembly(typeof(CourseValidator))) .ForEach(match => kernel.Bind(match.InterfaceType).To(match.ValidatorType)); AssemblyScanner.FindValidatorsInAssembly(Assembly.GetAssembly(typeof(CreateCourseViewModelValidator))) .ForEach(match => kernel.Bind(match.InterfaceType).To(match.ValidatorType)); kernel.Bind(typeof(IRepository <>)).To(typeof(EfRepository <>)); kernel.Bind <IAcademyPlatformDbContext>().To <AcademyPlatformDbContext>(); kernel.Bind(x => x.FromAssemblyContaining <CoursesService>().SelectAllClasses().BindDefaultInterfaces()); kernel.Bind <IHtmlSanitizer>().To <HtmlSanitizer>(); }
public static IServiceCollection AddMediatRConfigurations(this IServiceCollection services) { Assembly assembly = AppDomain.CurrentDomain.Load("IHolder.Application"); AssemblyScanner.FindValidatorsInAssembly(assembly) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddScoped(typeof(IPipelineBehavior <,>), typeof(FailFastRequestBehavior <,>)); services.AddMediatR(typeof(Startup)); services.AddMediatR(assembly); return(services); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); //services.AddFluentValidation(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebJetMovies", Version = "v1" }); }); services.AddCors(options => { options.AddPolicy("AllowAny", builder => { builder.WithOrigins("*"); }); }); AssemblyScanner .FindValidatorsInAssembly(Assembly.GetExecutingAssembly()) .ForEach(result => services.AddScoped(result.InterfaceType, result.ValidatorType)); services.AddMediatR(Assembly.GetExecutingAssembly()); services.AddHttpClient <IHttpClientWrapper, HttpClientWrapper>((client) => { //Token that is retrieved from environment variables (not included in GitHub //and not sent to the UI for security. Instead app service has it set as an env variable) client.DefaultRequestHeaders.Add(ApiConstants.RequestHeaders.AccessTokenHeaderName, Configuration[ApiConstants.ConfigurationNames.AccessToken]); Uri.TryCreate(Configuration[ApiConstants.ConfigurationNames.ApiServerAddress], UriKind.Absolute, out Uri baseAddress); client.BaseAddress = baseAddress; client.Timeout = TimeSpan.FromSeconds(double.Parse(Configuration[ApiConstants.ConfigurationNames.MaxDurationOfClientRequest])); }).SetHandlerLifetime(TimeSpan.FromMinutes(5)) .AddPolicyHandler(RetryPolicy.GetRetryPolicy()); services.AddScoped <IMovieApiClient, MovieApiClient>(); services.Configure <MovieApiUris>(Configuration.GetSection(ApiConstants.ConfigurationNames.MovieApiUris)); services.Configure <ApiRequestDetails>(Configuration.GetSection(ApiConstants.ConfigurationNames.ApiRequestDetails)); services.AddApiVersioning(config => { config.DefaultApiVersion = new ApiVersion(1, 0); config.AssumeDefaultVersionWhenUnspecified = true; config.ReportApiVersions = true; config.ApiVersionReader = new HeaderApiVersionReader("api-version"); }); services.AddSingleton(Log.Logger); }