public static void ConfigureApi(this Container container)
        {
            var lifestyle = new WebApiRequestLifestyle();

            container.RegisterDependencies(lifestyle);
            container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
            GlobalConfiguration.Configuration.DependencyResolver =
                new SimpleInjectorWebApiDependencyResolver(container);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
        }
示例#6
0
        /// <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
            });
        }