public static void Configure(VoyagerConfigurationBuilder builder, IServiceCollection services) { var isRegistered = services.Any(s => s.ImplementationType == typeof(IsRegistered)); if (!isRegistered) { services.AddSingleton <VoyagerOptionsHolder>(); services.AddScoped <IsRegistered>(); services.AddMvcCore().AddApiExplorer(); services.TryAddEnumerable(ServiceDescriptor.Transient <IApiDescriptionProvider, VoyagerApiDescriptionProvider>()); services.AddSingleton <ExceptionHandler, DefaultExceptionHandler>(); var voyagerConfig = new VoyagerConfiguration { EnvironmentName = Environment.GetEnvironmentVariable("VOYAGER_ENVIRONMENT") ?? Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "DEVELOPMENT" }; services.AddSingleton(voyagerConfig); builder.AddAssemblyWith <VoyagerConfigurationBuilder>(); services.AddHttpContextAccessor(); services.TryAddTransient <ModelBinder, DefaultModelBinder>(); services.TryAddTransient <DefaultModelBinder>(); services.AddScoped(typeof(IPipelineBehavior <,>), typeof(ValidationBehavior <,>)); services.AddLogging(); services.AddSingleton <TypeBindingRepository>(); } services.AddValidatorsFromAssemblies(builder.Assemblies); RegisterMediatorHandlers(services, builder.Assemblies); RegisterVoyagerRoutes(services, builder.Assemblies); AddCustomAuthorization(services, builder.Assemblies); services.AddMediatR(builder.Assemblies.ToArray()); }
public static void AddVoyager(this IServiceCollection services, Action <VoyagerConfigurationBuilder> configure = null) { var configurationBuilder = new VoyagerConfigurationBuilder(); configure?.Invoke(configurationBuilder); VoyagerStartup.Configure(configurationBuilder, services); }
public static void AddVoyager(this IServiceCollection services, Action <VoyagerConfigurationBuilder> configure = null) { var configurationBuilder = new VoyagerConfigurationBuilder(); if (configure == null) { configurationBuilder.Assemblies.Add(Assembly.GetCallingAssembly()); } else { configure?.Invoke(configurationBuilder); } VoyagerStartup.Configure(configurationBuilder, services); }