public static void ConfigureApi(this Container container) { var lifestyle = new WebApiRequestLifestyle(); container.RegisterDependencies(lifestyle); container.RegisterWebApiControllers(GlobalConfiguration.Configuration); GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); }
/// <summary> /// Creates a <see cref="Lifestyle"/> that supports sharing an instance within a Web Api request, or if no Web Api request /// is in scope, creates a transient instance. /// </summary> /// <param name="container"></param> /// <returns></returns> public static Lifestyle PerWebApiRequestOrTransientLifestyle(this Container container) { Contract.Requires <ArgumentNullException>(container != null); var webApiRequestLifestyle = new WebApiRequestLifestyle(true); var hybridLifestyle = Lifestyle.CreateHybrid(() => webApiRequestLifestyle.GetCurrentScope(container) == null, Lifestyle.Transient, webApiRequestLifestyle); return(hybridLifestyle); }
private static void RegisterApiControllers(Container container) { // TODO: use container.RegisterWebApiControllers() var webApiLifestyle = new WebApiRequestLifestyle(); var controllerTypes = from t in typeof(ServerRunner).Assembly.GetTypes() where !t.IsAbstract && typeof(ApiController).IsAssignableFrom(t) select t; foreach (var type in controllerTypes) { container.Register(type, type, webApiLifestyle); } }
private static void InitializeContainer(Container container) { var webApiLifeStyle = new WebApiRequestLifestyle(); // unit of work - db context injection container.Register <IUnitOfWork, ContosoUniversityContext>(webApiLifeStyle); // register implementations of generic IAsyncCommandHandler container.Register(typeof(IAsyncCommandHandler <>), new[] { typeof(IAsyncCommandHandler <>).Assembly }, webApiLifeStyle); container.RegisterDecorator( typeof(IAsyncCommandHandler <>), typeof(SaveCommandHandlerDecorator <>)); // register implementations of generic IAsyncQueryHandler container.Register(typeof(IAsyncQueryHandler <,>), new[] { typeof(IAsyncQueryHandler <,>).Assembly }, webApiLifeStyle); // register implementations of IQueryMediator container.Register <IQueryMediator, QueryMediator>(); }
private void ConfigureDependencyInjection(HttpConfiguration config, Container container) { var lifestyle = new WebApiRequestLifestyle(); container.Register <DataContext, DataContext>(lifestyle); container.Register <Autenticacao.Persistencia.Interfaces.IUnitOfWork, Autenticacao.Persistencia.UnitOfWork>(lifestyle); container.Register <IUsuarioRepositorio, UsuarioRepositorio>(lifestyle); container.Register <IUsuarioAplicacaoServico, UsuarioAplicacaoServico>(lifestyle); container.Register <IAppKeyRepositorio, AppKeyRepositorio>(lifestyle); container.Register <IAppKeyAplicacaoServico, AppKeyAplicacaoServico>(lifestyle); container.Register <IHandler <DomainNotification>, DomainNotificationHandler>(lifestyle); config.DependencyResolver = new SimpleInjector.Integration.WebApi.SimpleInjectorWebApiDependencyResolver(container); DomainEvent.Container = new DominioEventosContainer(config.DependencyResolver); }
/// <summary> /// Registers application-level IoC settings. /// </summary> /// <param name="container"></param> public void RegisterServices(Container container) { // Support sharing the DbContext amongst objects participating in a single request; // but if there is no request, just make it transient. var webApiRequestLifestyle = new WebApiRequestLifestyle(true); var hybridLifestyle = Lifestyle.CreateHybrid(() => webApiRequestLifestyle.GetCurrentScope(container) == null, Lifestyle.Transient, webApiRequestLifestyle); container.Register <TodoListContext>(hybridLifestyle); container.RegisterLazy <TodoListContext>(); // Required: Register global datamodel metadata (IContainerMetadata and IContainerMetadata<DbContext>) var mmRegistration = Lifestyle.Singleton.CreateRegistration <DbContextMetadata <TodoListContext> >(container); container.AddRegistration(typeof(IContainerMetadata), mmRegistration); container.AddRegistration(typeof(IContainerMetadata <TodoListContext>), mmRegistration); // Query validation settings could be specified here container.RegisterSingle(new ODataValidationSettings() { MaxExpansionDepth = 5, MaxTop = 200 }); }