/// <inheritdoc /> protected override void Load(ContainerBuilder builder) { ContainerBuilderExtensions.AddMediatR(builder, typeof(PresenterCreateAreaCommand).GetTypeInfo().Assembly); ContainerBuilderExtensions.AddMediatR(builder, typeof(PresenterUpdateAreaCommand).GetTypeInfo().Assembly); ContainerBuilderExtensions.AddMediatR(builder, typeof(PresenterDeleteAreaCommand).GetTypeInfo().Assembly); builder.RegisterType <AreasCreateValidator>() .As <IValidator <PresenterCreateAreaCommand> >(); builder.RegisterType <EventAreaCreateValidator>() .As <IValidator <PresenterCreateEventAreaCommand> >(); builder.RegisterType <EventCreateValidator>() .As <IValidator <PresenterCreateEventCommand> >(); builder.RegisterType <EventSeatCreateValidator>() .As <IValidator <PresenterCreateEventSeatCommand> >(); builder.RegisterType <LayoutCreateValidator>() .As <IValidator <PresenterCreateLayoutCommand> >(); builder.RegisterType <SeatCreateValidator>() .As <IValidator <PresenterCreateSeatCommand> >(); builder.RegisterType <VenueCreateValidator>() .As <IValidator <PresenterCreateVenueCommand> >(); builder.RegisterGeneric(typeof(ApplicationValidatorBehavior <,>)).As(typeof(IPipelineBehavior <,>)); // builder.RegisterType<EventAddressService>().As<IEventAddressService>(); // builder.RegisterType<EventPlaceService>().As<IEventPlaceService>(); // builder.RegisterType<EventService>().As<IEventService>(); }
public void ContainerBuilderIsARequiredParameterForBuildMethod() { //Arrange ContainerBuilder builder = null; var config = new Configuration(); //Act + Assert Expect.ArgumentNullException(() => ContainerBuilderExtensions.Build(builder, config)); }
/// <summary> /// Arranges the fixtures. /// </summary> /// <typeparam name="TImplementer">Type of implemented instance.</typeparam> /// <typeparam name="TService">Type of service of instance.</typeparam> /// <returns>Returns the <see cref="TService"/>.</returns> public TService ArrangeFixturesForRegisterTypeAsSingleInstance <TImplementer, TService>() { Action <ContainerBuilder> action = p => ContainerBuilderExtensions.RegisterTypeAsSingleInstance <TImplementer, TService>(p); var container = this.ArrangeContainer(action); var resolved = container.Resolve <TService>(); return(resolved); }
/// <summary> /// Arranges the fixtures. /// </summary> /// <typeparam name="TImplementer">Type of implemented instance.</typeparam> /// <typeparam name="TService">Type of service of instance.</typeparam> /// <returns>Returns the <see cref="TService"/>.</returns> public TService ArrangeFixturesForRegisterAsSingleInstance <TImplementer, TService>() where TImplementer : new() { Func <IComponentContext, TImplementer> func = _ => new TImplementer(); Action <ContainerBuilder> action = p => ContainerBuilderExtensions.RegisterAsSingleInstance <TImplementer, TService>(p, func); var container = this.ArrangeContainer(action); var resolved = container.Resolve <TService>(); return(resolved); }
protected override void RegisterModule(ContainerBuilderWrapper builder) { var appConfig = new AppConfig(); UseConsulAddressSelector(builder) .UseConsulClientProvider(builder, appConfig); builder.ContainerBuilder.RegisterType <DefaultConsulProvider>().As <IConsulProvider>() .WithParameter(new TypedParameter(typeof(AppConfig), appConfig)) .SingleInstance(); builder.ContainerBuilder.RegisterType <ServiceRouteProvider>().As <IServiceRouteProvider>() .WithParameter(new TypedParameter(typeof(Type[]), ContainerBuilderExtensions.GetTypes())) .SingleInstance(); }
private static Type[] GetAllTypes() { if (_types == null) { lock (SyncObj) { if (_types == null) { _types = ContainerBuilderExtensions.GetTypes(); } } } return(_types); }
public static void Register(HttpConfiguration config) { // TODO: ?? do we need eliminating necessity using full-qualified names ??: // http://odata.github.io/WebApi/#06-01-custom-url-parsing // config.EnableCaseInsensitive(caseInsensitive: true); // config.EnableUnqualifiedNameCall(unqualifiedNameCall: true); config.Count().Filter().OrderBy().Expand().Select().MaxTop(null); //new line _routeName = "DefaultODataRoute"; config.MapODataServiceRoute(_routeName, RoutePrefix, // edmModel builder => ContainerBuilderExtensions.AddService(builder, ServiceLifetime.Singleton, sp => EdmModel) .AddService <IEnumerable <IODataRoutingConvention> >(ServiceLifetime.Singleton, sp => ODataRoutingConventions.CreateDefaultWithAttributeRouting(_routeName, config)) .AddService <ODataUriResolver>(ServiceLifetime.Singleton, sp => new StringAsEnumResolver { EnableCaseInsensitive = true }) ); config.EnsureInitialized(); }
// This code configures Web API. The Startup class is specified as a type // parameter in the WebApp.Start method. public void Configuration(IAppBuilder app) { try { var httpConfig = new HttpConfiguration(); var config = StartupHelper.Configuration; // var funnyQuotesConfig = new FunnyQuotesConfiguration(); // config.GetSection("FunnyQuotes").Bind(funnyQuotesConfig); // -- container registration var builder = new ContainerBuilder(); // build up autofac container builder.RegisterOptions(); // allow injection of strongly typed config builder.RegisterOption <FunnyQuotesConfiguration>(config.GetSection("FunnyQuotes")); builder.RegisterDiscoveryClient(config); // register eureka service discovery builder.RegisterConfiguration(config); builder.RegisterCloudFoundryOptions(config); builder.RegisterMySqlConnection(config); builder.RegisterConsoleLogging(); builder.Register(ctx => // register EF context { var connString = ctx.Resolve <IDbConnection>().ConnectionString; return(new FunnyQuotesCookieDbContext(connString)); }); builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); // register all controllers to be injectable builder.RegisterWebApiFilterProvider(httpConfig); // register autofac support for webapi filters builder.RegisterType <LoggerExceptionFilterAttribute>() // register global exception handler .AsWebApiExceptionFilterFor <ApiController>() .SingleInstance(); builder.RegisterCloudFoundryActuators(config); var container = builder.Build(); // compile the container // -- configure owin server httpConfig.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); // default to json instead of xml httpConfig.Routes.MapHttpRoute( // setup default routing for WebApi2 "DefaultApi", "api/{controller}/{action}" ); httpConfig.Routes.MapHttpRoute("Health", "{controller}/{action}", new { controller = "health", action = "health" }); // map "/" to basic health endpoint so the default PCF health check for HTTP 200 response is satisfied httpConfig.DependencyResolver = new AutofacWebApiDependencyResolver(container); // assign autofac to provide dependency injection on controllers var funnyQuotesConfig = container.Resolve <IOptionsMonitor <FunnyQuotesConfiguration> >().CurrentValue; // -- setup app pipeline app.UseAutofacMiddleware(container); // allows injection of dependencies into owin middleware if (funnyQuotesConfig.EnableSecurity) { app.UseCloudFoundryJwtBearerAuthentication(config); // add security integration for PCF SSO } else { app.Use <NoAuthenticationMiddleware>(); // dummy security provider which is necessary if you have secured actions on controllers } app.UseAutofacWebApi(httpConfig); // merges owin pipeline with autofac request lifecycle app.UseWebApi(httpConfig); // standard OWIN WebAPI2 app.UseCors(CorsOptions.AllowAll); container.StartDiscoveryClient(); // ensure that discovery client is started ContainerBuilderExtensions.StartActuators(container); var logger = container.Resolve <ILogger <Startup> >(); container.MigrateDatabase(); logger.LogInformation(">> App Started <<"); } catch (Exception e) { // given that logging is DI controlled it may not be initialized, just write directly to console Console.Error.WriteLine(e); throw; } }