public void ProvidedLifetimeScopeExposed()
        {
            var container = new ContainerBuilder().Build();
            var dependencyResolver = new AutofacDependencyResolver(container);

            Assert.Equal(container, dependencyResolver.LifetimeScope);
        }
        public void CurrentPropertyExposesTheCorrectResolver()
        {
            var container = new ContainerBuilder().Build();
            var resolver = new AutofacDependencyResolver(container);

            GlobalHost.DependencyResolver = resolver;

            Assert.Equal(GlobalHost.DependencyResolver, AutofacDependencyResolver.Current);
        }
        public void GetServiceReturnsNullForUnregisteredService()
        {
            var container = new ContainerBuilder().Build();
            var resolver = new AutofacDependencyResolver(container);

            var service = resolver.GetService(typeof(object));

            Assert.Null(service);
        }
        public void GetServiceReturnsRegisteredService()
        {
            var builder = new ContainerBuilder();
            builder.Register(c => new object());
            var container = builder.Build();
            var resolver = new AutofacDependencyResolver(container);

            var service = resolver.GetService(typeof(object));

            Assert.NotNull(service);
        }
        public void AutofacResolveSingleInstance()
        {
            var builder = new ContainerBuilder();
            var registered = new Registered();
            builder.RegisterInstance(registered);

            var resolver = new AutofacDependencyResolver(builder.Build());

            var resolved = (Registered) resolver.GetInstance(typeof (Registered));

            Assert.That(resolved, Is.EqualTo(registered));
        }
        public void Resolve_SingleTypeParameter_Resolved()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType<InterfaceImplementationA>().As<IInterfaceToResolve>();

            var container = builder.Build();

            var theResolver = new AutofacDependencyResolver(container);

            Assert.IsType<InterfaceImplementationA>(theResolver.GetService(typeof (IInterfaceToResolve)));
        }
        public void Resolve_MultipleFromTypeParameter_Resolved()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType<InterfaceImplementationA>().As<IInterfaceToResolve>();
            builder.RegisterType<InterfaceImplementationB>().As<IInterfaceToResolve>();

            var container = builder.Build();

            var theResolver = new AutofacDependencyResolver(container);

            Assert.Equal(2, theResolver.GetServices(typeof(IInterfaceToResolve)).Count());
        }
Exemple #8
0
        public void Run()
        {
            var builder = new ContainerBuilder();

            ExecuteRegistrations(builder);

            var container = builder.Build();

            _webApp = WebApp.Start(container.Resolve <IUrlProvider>().BackplaneUrl, app =>
            {
                app.UseWelcomePage("/");

                var config = new HttpConfiguration
                {
                    DependencyResolver       = new AutofacWebApiDependencyResolver(container),
                    IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always
                };
                config.MapHttpAttributeRoutes();
                app.UseWebApi(config);

                var resolver = new AutofacDependencyResolver(container);
                #region signalr dance to enable hub constructor DI

                var connectionManager = resolver.Resolve <IConnectionManager>();
                var updateBuilder     = new ContainerBuilder();
                updateBuilder.RegisterInstance(connectionManager).As <IConnectionManager>();
                updateBuilder.Update(container.ComponentRegistry);

                #endregion
                app.MapSignalR(new HubConfiguration {
                    Resolver = resolver, EnableDetailedErrors = true
                });
            });

            Observable.Interval(TimeSpan.FromSeconds(1))
            .Subscribe(_ => container.Resolve <BackplaneController>().BroadcastTokenAvailabilty());
        }
Exemple #9
0
        protected void Application_Start()
        {
            GlobalHost.DependencyResolver.UseRedis("127.0.0.1", 6379, string.Empty, "AgileR");

            RouteTable.Routes.MapHubs();

            AreaRegistration.RegisterAllAreas();

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var builder = new ContainerBuilder();

            builder.RegisterModule <AutofacWebTypesModule>();
            builder.RegisterAssemblyModules(Assembly.GetExecutingAssembly());
            var container = builder.Build();

            var autofacDependencyResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(autofacDependencyResolver);
            var resolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = resolver;

            GlobalConfiguration.Configuration.IncludeErrorDetailPolicy =
                IncludeErrorDetailPolicy.Always;

            // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
            // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
            // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712.
            //GlobalConfiguration.Configuration.EnableQuerySupport();

            // To disable tracing in your application, please comment out or remove the following line of code
            // For more information, refer to: http://www.asp.net/web-api
            GlobalConfiguration.Configuration.EnableSystemDiagnosticsTracing();
        }
Exemple #10
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            log4net.Config.XmlConfigurator.Configure();

            var builder = new ContainerBuilder();//把当前程序集中的 Controller 都注册,不要忘了.PropertiesAutowired()

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
            builder.RegisterApiControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            Assembly[] assemblies = new Assembly[] { Assembly.Load("IMS.Service") };// 获取所有相关类库的程序集
            builder.RegisterAssemblyTypes(assemblies).
            Where(type => !type.IsAbstract && typeof(IServiceSupport).IsAssignableFrom(type)).AsImplementedInterfaces().PropertiesAutowired();
            //type1.IsAssignableFrom(type2):Assign赋值,type1类型的变量是否可以指向type2类型的对象。也就是type2是否实现type1接口/type2是否继承自type1

            //注册系统级别的 DependencyResolver,这样当 MVC 框架创建 Controller 等对象的时候都是管 Autofac 要对象。
            var container = builder.Build();

            // Set the dependency resolver for MVC.
            var resolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(resolver);

            // Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            GlobalFilters.Filters.Add(new JsonNetActionFilter());
            GlobalFilters.Filters.Add(new SYSExceptionFilter());
            GlobalFilters.Filters.Add(new SYSAuthorizationFilter());
            StartQuartz();
        }
Exemple #11
0
        private static void SetIocContainer()
        {
            try
            {
                //Implement Autofac

                var configuration = GlobalConfiguration.Configuration;
                var builder       = new ContainerBuilder();

                // Register MVC controllers using assembly scanning.
                builder.RegisterControllers(Assembly.GetExecutingAssembly());

                // Register MVC controller and API controller dependencies per request.
                builder.RegisterType <UnitOfWork>().As <IUnitOfWork>().InstancePerDependency();
                builder.RegisterType <DatabaseFactory>().As <IDatabaseFactory>().InstancePerLifetimeScope();

                // Register service
                builder.RegisterAssemblyTypes(typeof(ProfileService).Assembly)
                .Where(t => t.Name.EndsWith("Service"))
                .AsImplementedInterfaces().InstancePerDependency();

                // Register repository
                builder.RegisterAssemblyTypes(typeof(ProfileRepository).Assembly)
                .Where(t => t.Name.EndsWith("Repository"))
                .AsImplementedInterfaces().InstancePerDependency();

                var container = builder.Build();

                //for MVC Controller Set the dependency resolver implementation.
                var resolverMvc = new AutofacDependencyResolver(container);
                System.Web.Mvc.DependencyResolver.SetResolver(resolverMvc);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Exemple #12
0
        private static void RegisterDependencies()
        {
            var builder = new ContainerBuilder();

            // Entities
            Database.SetInitializer <EntitiesContext>(null);

            builder.RegisterType <EntitiesContext>()
            .InstancePerHttpRequest();
            builder.RegisterGeneric(typeof(EntityRepository <>))
            .As(typeof(IEntityRepository <>))
            .InstancePerHttpRequest();

            // Services
            builder.RegisterAssemblyTypes(typeof(IUserService).Assembly)
            .Where(t => t.Name.EndsWith("Service"))
            .AsImplementedInterfaces()
            .InstancePerHttpRequest();

            // ASP.NET stack dependencies
            builder.RegisterModule(new AutofacWebTypesModule());
            builder.RegisterFilterProvider();
            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            // ASP.NET Web API dependencies
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            var container = builder.Build();

            var autofacDependencyResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(autofacDependencyResolver);

            var autofacWebApiDependencyResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = autofacWebApiDependencyResolver;
        }
Exemple #13
0
        public static void Register()
        {
            var builder = new ContainerBuilder();

            // Registers all ASP.NET MVC controllers
            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            // Registers all Web API controllers
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            // All other types to register
            DbConnection connection = Effort.DbConnectionFactory.CreatePersistent("AcTraining");

            builder.RegisterInstance(connection)
            .SingleInstance();

            builder.RegisterType <DataContext>()
            .InstancePerRequest();

            // register own types here!!!

            builder.RegisterType <CustomerRepository>()
            .As <ICustomerRepository>()
            .InstancePerRequest();

            var container = builder.Build();

            // Set the dependency resolver for MVC
            var mvcResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(mvcResolver);

            // Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;
        }
Exemple #14
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            GlobalConfiguration.Configuration.EnsureInitialized();

            var builder = new ContainerBuilder();

            builder.RegisterModule(new EfModule());
            builder.RegisterModule(new RepositoryModule());
            builder.RegisterModule(new ServiceModule());

            var config = GlobalConfiguration.Configuration;
            //Register your MVC controllers.
            var callingAssembly = Assembly.GetExecutingAssembly();

            builder.RegisterControllers(callingAssembly);

            // Register your Web API controllers.
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            // OPTIONAL: Register the Autofac filter provider.
            builder.RegisterWebApiFilterProvider(config);

            var container = builder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            var resolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(resolver);
            // CreateRolesAndUsers();
        }
        public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();

            WebApiConfiguration(config);

            var container = new AutofacContainer().Container;

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            app.UseAutofacMiddleware(container);
            app.UseAutofacWebApi(config);
            app.UseWebApi(config);

            var resolver = new AutofacDependencyResolver(container);

            app.MapSignalR(new HubConfiguration
            {
                Resolver             = resolver,
                EnableDetailedErrors = true
            });

            ConfigureSignalR(container, resolver);
        }
Exemple #16
0
        public void Configuration(IAppBuilder app)
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            //Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());


            builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            //DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Set the dependency resolver for MVC.
            var mvcResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(mvcResolver);

            // Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            ApplicationContainer.Container = container;

            //Finally Configure Auth
            ConfigureAuth(app);
        }
Exemple #17
0
        private void ConfigureContainer()
        {
            var builder = new ContainerBuilder();

            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            builder.RegisterType <RecognitionDbContext>().As <RecognitionDbContext>();

            builder.RegisterType <SpeakersRepository>().As <ISpeakerRepository>();
            builder.RegisterType <FeaturesRepository>().As <IFeaturesRepository>();


            builder.RegisterType <UnitOfWork>().As <IUnitOfWork>();

            //builder.RegisterType<RecognitionService>().As<IRecognitionService>().WithParameter("baseDirectory", SamplesPath);
            builder.RegisterType <SpeakerRecignitionService>().As <IRecognitionService>();

            var container = builder.Build();

            _resolver = new AutofacDependencyResolver(container);
            var config = GlobalConfiguration.Configuration;

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
        public static void Register(HttpConfiguration config)
        {
            var builder = new ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly);
            builder.RegisterApiControllers(typeof(MvcApplication).Assembly);

            builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinderProvider();

            builder.RegisterModule <AutofacWebTypesModule>();
            builder.RegisterModule <ValidationModule>();

            builder.RegisterSource(new ViewRegistrationSource());
            builder.RegisterFilterProvider();

            RegisterTypes(builder);

            var container = builder.Build();

            AutofacDependencyResolver = new AutofacDependencyResolver(container);
            DependencyResolver.SetResolver(AutofacDependencyResolver);
            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
        }
Exemple #19
0
        protected void Application_Start()
        {
            //Database.SetInitializer<Salvis.DataLayer.DataModelContainer>(null);

            //System.Web.Helpers.AntiForgeryConfig.RequireSsl = true;

            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var container = CreateContainer();

            // MVC Dependency
            var mvcResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(mvcResolver);

            // WebAPI Dependency
            var webApiResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;
        }
Exemple #20
0
        public static void RegisterComponets()
        {
            var builder = new ContainerBuilder();

            //Context
            builder.RegisterType <PrinteryContext>().As <IPrinteryContext>().InstancePerRequest();

            //Repositories
            builder.RegisterType <OrderRespository>().As <IOrderRespository>().InstancePerRequest();
            builder.RegisterType <ProductRespository>().As <IProductRespository>().InstancePerRequest();
            builder.RegisterType <PaperRespository>().As <IPaperRespository>().InstancePerRequest();
            builder.RegisterType <InkRespository>().As <IInkRespository>().InstancePerRequest();
            builder.RegisterType <EmpRepository>().As <IEmpRepository>().InstancePerRequest();
            builder.RegisterType <CustomerRepository>().As <ICustomerRepository>().InstancePerRequest();
            builder.RegisterType <PowerCheckRepository>().As <IPowerCheckRepository>().InstancePerRequest();

            //Provider
            builder.RegisterType <OrderProvider>().As <IOrderProvider>().InstancePerRequest();
            builder.RegisterType <ProductProvider>().As <IProductProvider>().InstancePerRequest();
            builder.RegisterType <PaperProvider>().As <IPaperProvider>().InstancePerRequest();
            builder.RegisterType <InkProvider>().As <IInkProvider>().InstancePerRequest();
            builder.RegisterType <EmpProvider>().As <IEmpProvider>().InstancePerRequest();
            builder.RegisterType <CustomerProvider>().As <ICustomerProvider>().InstancePerRequest();
            builder.RegisterType <PowerCheckProvider>().As <IPowerCheckProvider>().InstancePerRequest();


            //other
            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            //builder the Container
            var config             = GlobalConfiguration.Configuration;
            var container          = builder.Build();
            var dependencyResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(dependencyResolver);
        }
Exemple #21
0
        private void ConfigureDependencyInjection(IAppBuilder app, HttpConfiguration apiConfig)
        {
            var      builder           = new ContainerBuilder();
            Assembly executingAssembly = Assembly.GetExecutingAssembly();

            builder.RegisterApiControllers(executingAssembly);
            builder.RegisterControllers(executingAssembly);

            RegisterComponents(builder, app);

            var container = builder.Build();

            app.UseAutofacMiddleware(container);

            var apiResolver = new AutofacWebApiDependencyResolver(container);

            apiConfig.DependencyResolver = apiResolver;
            app.UseAutofacWebApi(apiConfig);

            var mvcResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(mvcResolver);
            app.UseAutofacMvc();
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


            // REGISTRO AUTOFAC
            #region REGISTRO AUTOFAC
            var builder = new ContainerBuilder();

            // builder.RegisterType<PersonasController>().InstancePerRequest();

            // Get your HttpConfiguration.
            //var config = GlobalConfiguration.Configuration;

            var config = new HttpConfiguration();

            // OPTIONAL: Register the Autofac filter provider.
            builder.RegisterWebApiFilterProvider(config);

            // Register your MVC controllers. (MvcApplication is the name of
            // the class in Global.asax.)
            builder.RegisterControllers(typeof(WebApiApplication).Assembly);

            builder.RegisterApiControllers(typeof(WebApiApplication).Assembly);

            // OPTIONAL: Register model binders that require DI.
            builder.RegisterModelBinders(typeof(WebApiApplication).Assembly);
            builder.RegisterModelBinderProvider();

            // OPTIONAL: Register web abstractions like HttpContextBase.
            builder.RegisterModule <AutofacWebTypesModule>();

            // OPTIONAL: Enable property injection in view pages.
            builder.RegisterSource(new ViewRegistrationSource());

            // OPTIONAL: Enable property injection into action filters.
            builder.RegisterFilterProvider();

            // OPTIONAL: Enable action method parameter injection (RARE).
            //  builder.InjectActionInvoker();

            //DEPENDENCIAS DE LA APLICACION
            // APPLICATION SERVICE
            builder.RegisterType <UserRepository>().As <IUserRepository>().InstancePerRequest();



            //   builder.RegisterAssemblyTypes(typeof(Models.Command.Persona.PersonaCommand).GetTypeInfo().Assembly).AsImplementedInterfaces();
            // builder.RegisterAssemblyTypes(typeof(Models.Query.Persona.PersonaQuery).GetTypeInfo().Assembly).AsImplementedInterfaces();


            // Set the dependency resolver to be Autofac.
            var container = builder.Build();

            // GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver((IContainer)container); //Set the WebApi DependencyResolver
            //  config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
            // DependencyResolver.SetResolver(new AutofacDependencyResolver(container));


            //AQUI
            //// Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);
            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            //// Set the dependency resolver for MVC.
            var mvcResolver = new AutofacDependencyResolver(container);
            DependencyResolver.SetResolver(mvcResolver);
            //HASTA AQUI

            #endregion
        }
Exemple #23
0
        void SetUpAutoFac()
        {
            System.Diagnostics.Trace.TraceError("Autofac Setup...");

            var builder = new ContainerBuilder();

            //
            // REGISTERING CONTROLLERS
            //
            builder.RegisterType <DatabaseFactory>().As <IDatabaseFactory>().InstancePerRequest();
            builder.RegisterType <CoreController>();
            builder.RegisterType <LoginController>();
            builder.RegisterType <PaisesController>();
            builder.RegisterType <EstatusController>();
            builder.RegisterType <NizaController>();
            builder.RegisterType <ViennaController>();
            builder.RegisterType <MarcaController>();
            builder.RegisterType <PatenteController>();
            builder.RegisterType <DAutorController>();
            builder.RegisterType <ExpedienteController>();
            builder.RegisterType <EventosController>();
            builder.RegisterType <OpsXEventoController>();
            builder.RegisterType <OpcionesController>();
            builder.RegisterType <LeyesController>();
            builder.RegisterType <RolesController>();
            builder.RegisterType <UsuariosController>();
            builder.RegisterType <UsuariosPublicosController>();
            builder.RegisterType <EntitiesController>();
            builder.RegisterType <GacetaController>();
            builder.RegisterType <FavoritosController>();
            builder.RegisterType <AuthController>();
            builder.RegisterType <AuthPublicController>();
            builder.RegisterType <PatTitularController>();
            builder.RegisterType <AgentesController>();
            builder.RegisterType <InventoresController>();
            builder.RegisterType <PermisosController>();
            builder.RegisterType <AnotacionController>();

            //
            // REGISTERING MANAGERS
            //
            builder.RegisterType <UserManager>().As <IUserManager>();
            builder.RegisterType <PaisManager>().As <IPaisManager>();
            builder.RegisterType <EstatusManager>().As <IEstatusManager>();
            builder.RegisterType <EnumManager>().As <IEnumManager>();

            builder.RegisterType <NizaManager>().As <INizaManager>();
            builder.RegisterType <VienaManager>().As <IVienaManager>();
            builder.RegisterType <EventoManager>().As <IEventoManager>();
            builder.RegisterType <OpcionManager>().As <IOpcionManager>();
            builder.RegisterType <ExpedienteManager>().As <IExpedienteManager>();
            builder.RegisterType <MarcaManager>().As <IMarcaManager>();
            builder.RegisterType <OpcionesPorEventoManager>().As <IOpcionesPorEventoManager>();
            builder.RegisterType <LeyesManager>().As <ILeyesManager>();
            builder.RegisterType <RolManager>().As <IRolManager>();

            builder.RegisterType <SessionManager>().As <ISessionManager>();

            builder.RegisterType <UsuarioPublicoManager>().As <IUsuarioPublicoManager>();
            builder.RegisterType <PublicacionManager>().As <IPublicacionManager>();
            builder.RegisterType <FavoritoManager>().As <IFavoritoManager>();
            builder.RegisterType <GrupoManager>().As <IGrupoManager>();
            builder.RegisterType <GrupoExpedienteManager>().As <IGrupoExpedienteManager>();
            builder.RegisterType <GrupoMiembroManager>().As <IGrupoMiembroManager>();
            builder.RegisterType <UsuarioPublicoManager>().As <IUsuarioPublicoManager>();
            builder.RegisterType <EstadisticaManager>().As <IEstadisticaManager>();
            builder.RegisterType <PatTitularManager>().As <IPatTitularManager>();
            builder.RegisterType <PatenteManager>().As <IPatenteManager>();
            builder.RegisterType <AgenteManager>().As <IAgenteManager>();
            builder.RegisterType <InventorManager>().As <IInventorManager>();
            builder.RegisterType <DerechoDeAutorManager>().As <IDerechoDeAutorManager>();
            builder.RegisterType <PermisoManager>().As <IPermisoManager>();


            //
            // REGISTERING REPOSITORIES
            //
            builder.RegisterType <UserRepository>().As <IUserRepository>();
            builder.RegisterType <PaisRepository>().As <IPaisRepository>();
            builder.RegisterType <EstatusRepository>().As <IEstatusRepository>();
            builder.RegisterType <EnumRepository>().As <IEnumRepository>();

            builder.RegisterType <NizaRepository>().As <INizaRepository>();
            builder.RegisterType <VienaRepository>().As <IVienaRepository>();
            builder.RegisterType <EventoRepository>().As <IEventoRepository>();
            builder.RegisterType <OpcionRepository>().As <IOpcionRepository>();
            builder.RegisterType <ExpedienteRepository>().As <IExpedienteRepository>();
            builder.RegisterType <MarcaRepository>().As <IMarcaRepository>();
            builder.RegisterType <OpcionesPorEventoRepository>().As <IOpcionesPorEventoRepository>();
            builder.RegisterType <LeyesRepository>().As <ILeyesRepository>();
            builder.RegisterType <RolRepository>().As <IRolRepository>();
            builder.RegisterType <SessionRepository>().As <ISessionRepository>();
            builder.RegisterType <UsuarioPublicoRepository>().As <IUsuarioPublicoRepository>();
            builder.RegisterType <PublicacionRepository>().As <IPublicacionRepository>();
            builder.RegisterType <FavoritoRepository>().As <IFavoritoRepository>();
            builder.RegisterType <GrupoRepository>().As <IGrupoRepository>();
            builder.RegisterType <GrupoExpedienteRepository>().As <IGrupoExpedienteRepository>();
            builder.RegisterType <GrupoMiembroRepository>().As <IGrupoMiembroRepository>();
            builder.RegisterType <UsuarioPublicoRepository>().As <IUsuarioPublicoRepository>();
            builder.RegisterType <EstadisticaRepository>().As <IEstadisticaRepository>();
            builder.RegisterType <PatTitularRepository>().As <IPatTitularRepository>();
            builder.RegisterType <PatenteRepository>().As <IPatenteRepository>();
            builder.RegisterType <AgenteRepository>().As <IAgenteRepository>();
            builder.RegisterType <InventorRepository>().As <IInventorRepository>();
            builder.RegisterType <DerechoDeAutorRepository>().As <IDerechoDeAutorRepository>();
            builder.RegisterType <PermisoRepository>().As <IPermisoRepository>();
            builder.RegisterType <AuditoriaRepository>().As <IAuditoriaRepository>();

            builder.RegisterType <Repository <Usuario> >().As <IRepository <Usuario> >();
            builder.RegisterType <CryptoManager>().As <ICryptoManager>();
            builder.RegisterType <Transaction>().As <ITransaction>();


            builder.Register(c =>
                             new HttpContextWrapper(HttpContext.Current) as HttpContextBase)
            .InstancePerRequest();

            builder.Register(c => c.Resolve <HttpContextBase>().Request)
            .As <HttpRequestBase>()
            .InstancePerRequest();

            builder.Register(c => c.Resolve <HttpContextBase>().Response)
            .As <HttpResponseBase>()
            .InstancePerRequest();

            builder.Register(c => c.Resolve <HttpContextBase>().Server)
            .As <HttpServerUtilityBase>()
            .InstancePerRequest();

            builder.Register(c => c.Resolve <HttpContextBase>().Session)
            .As <HttpSessionStateBase>()
            .InstancePerRequest();


            //builder.Register(c =>
            //    //register FakeHttpContext when HttpContext is not available
            //    HttpContext.Current != null ?
            //    (new HttpContextWrapper(HttpContext.Current) as HttpContextBase) :
            //    (new FakeHttpContext("~/") as HttpContextBase))
            //    .As<HttpContextBase>()
            //    .InstancePerHttpRequest();

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            var resolver = new AutofacDependencyResolver(container);


            // config.DependencyResolver = new AutoFacContainer(resolver);
        }
        private static void RegisterDependencyResolver(IContainer container)
        {
            var resolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(resolver);
        }
Exemple #25
0
        protected void Application_Start()
        {
            // Setup IoC container
            ContainerBuilder builder = Factory.IoContainer;

            builder.RegisterType <Models.SqlRepository>().As <Models.IRepository>().InstancePerRequest();
            builder.RegisterType <CustomAuthentication>().As <IAuthentication>().PropertiesAutowired().InstancePerRequest();


            //builder.Register(c => new CustomAuthentication ()).As<IAuthentication> ().InstancePerRequest();

            //Assembly executingAssembly = Assembly.GetExecutingAssembly();

            // Register dependencies in controllers
            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            // Register dependencies in filter attributes
            builder.RegisterFilterProvider();

            // Register dependencies in custom views
            builder.RegisterSource(new ViewRegistrationSource());

            //builder.Register(c => new Algowe.Web.Controllers.AccountController().

            IContainer container = builder.Build();

            var afdr = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(afdr);


            AreaRegistration.RegisterAllAreas();
            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            //builder.RegisterModule(new ServicesModule());

            //builder.Register(c => new Entities()).As<IEntities>()
            //	.OnActivated(e =>
            //		{
            //			var config = DependencyResolver.Current.GetService<IGlobalSettings>();
            //			e.Instance.RawConnectionString = config.Data.SqlServerConnectionString;
            //		}).InstancePerHttpRequest();

            /*
             *          builder.RegisterType<LocalizationContext>().PropertiesAutowired().InstancePerHttpRequest();
             *
             *          builder.Register(c => new DefaultGlobalSettings()).As<IGlobalSettings>().SingleInstance();
             *
             *          builder.RegisterGeneric(typeof(MongoRepository<>))
             *                  .As(typeof(IMongoRepository<>)).InstancePerHttpRequest();
             *
             *          builder.Register(c => EnvironmentContext()).As<IEnvironmentContext>().InstancePerHttpRequest();
             *
             *          builder.RegisterModule(new AutofacWebTypesModule());
             *
             *          builder.RegisterSource(new ViewRegistrationSource());
             *
             *          builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
             *          builder.RegisterModelBinderProvider();
             *
             *          builder.RegisterFilterProvider();
             *
             *          IContainer container = builder.Build();
             *          DependencyResolver.SetResolver(new AutofacDependencyResolver(container));*/
            CheckVersion();
        }
Exemple #26
0
        static IContainer GetContainer()
        {
            var builder = new ContainerBuilder();

            var assemblies = AppDomain.CurrentDomain.GetAssemblies()
                             .Where(e => e.FullName.Contains("FaceGraphTask") ||
                                    e.FullName.Contains("CQRS")).ToArray();

            builder.RegisterAssemblyTypes(assemblies)
            .Where(t => typeof(ICommand).IsAssignableFrom(t))
            .InstancePerLifetimeScope().AsImplementedInterfaces();


            builder.RegisterAssemblyTypes(assemblies)
            .AsClosedTypesOf(typeof(ICommandValidator <>))
            .AsImplementedInterfaces();


            builder.RegisterAssemblyTypes(assemblies)
            .Where(t => t.BaseType == typeof(HttpApplicationStateBase))
            .AsSelf()
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();

            builder.RegisterAssemblyTypes(assemblies)
            .Where(t => t.BaseType == typeof(HttpSessionStateBase))
            .AsSelf()
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();

            builder.RegisterAssemblyTypes(assemblies)
            .Where(t => t == typeof(FileManager))
            .AsSelf()
            .WithParameter("rootPath", "~/app_data/")
            .AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(assemblies)
            .AsClosedTypesOf(typeof(Application <>))
            .AsSelf()
            .AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(assemblies)
            .AsClosedTypesOf(typeof(Session <>))
            .AsSelf()
            .AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(assemblies)
            .AssignableTo <ICacheManager>()
            .AsImplementedInterfaces()
            .As(typeof(ICacheManager));

            builder.RegisterAssemblyTypes(assemblies)
            .Where(t => t.BaseType == typeof(BaseEntity)).InstancePerDependency()
            .AsSelf()
            .AsImplementedInterfaces();


            #region Entity Framework
            builder.RegisterAssemblyTypes(assemblies)
            .AsClosedTypesOf(typeof(Infrastructure.Commands.Interfaces.IFrameWorkCommandHandler <>))
            .AsSelf()
            .AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(assemblies)
            .AssignableTo <ICommandExecuter>()
            .AsImplementedInterfaces()
            //.WithParameter("connectionString", "DefaultConnection")
            .As(typeof(ICommandExecuter));

            builder.RegisterAssemblyTypes(assemblies)
            .AssignableTo <ICommandService>()
            .AsSelf()
            .AsImplementedInterfaces()
            .As(typeof(ICommandService));

            var container = builder.Build();

            builder = new ContainerBuilder();
            builder.RegisterAssemblyTypes(assemblies)
            .AssignableTo <ICommandDispatcher>()
            .AsImplementedInterfaces()
            .As(typeof(ICommandDispatcher))
            .WithParameter("container", container);

            //builder.RegisterAssemblyTypes(assemblies)
            //   .AsClosedTypesOf(typeof(BaseApiController))
            //   .AsSelf()
            //   .AsImplementedInterfaces();

            //builder.RegisterAssemblyTypes(assemblies)
            //  .AsClosedTypesOf(typeof(BaseController))
            //  .AsSelf()
            //  .AsImplementedInterfaces();

            //builder.Update(container);
            #endregion

            builder.RegisterModule(new AutofacWebTypesModule());

            #region Mvc
            // Register dependencies in filter attributes
            builder.RegisterFilterProvider();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
            builder.RegisterModelBinderProvider();

            MvcResolver = new AutofacDependencyResolver(container);
            #endregion

            #region Web Api
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            //WebApi resolver.
            WebApiResolver = new AutofacWebApiDependencyResolver(container);
            #endregion

            builder.Update(container);
            return(container);
        }
        public void CanResolveDefaultServices()
        {
            var container = new ContainerBuilder().Build();
            var resolver = new AutofacDependencyResolver(container);

            var service = resolver.GetService(typeof(IMessageBus));

            Assert.IsAssignableFrom<IMessageBus>(service);
        }
Exemple #28
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


            // REGISTRO AUTOFAC
            #region REGISTRO AUTOFAC
            var builder = new ContainerBuilder();

            // builder.RegisterType<PersonasController>().InstancePerRequest();

            // Get your HttpConfiguration.
            //var config = GlobalConfiguration.Configuration;

            var config = new HttpConfiguration();

            // OPTIONAL: Register the Autofac filter provider.
            builder.RegisterWebApiFilterProvider(config);

            // Register your MVC controllers. (MvcApplication is the name of
            // the class in Global.asax.)
            builder.RegisterControllers(typeof(WebApiApplication).Assembly);

            builder.RegisterApiControllers(typeof(WebApiApplication).Assembly);

            // OPTIONAL: Register model binders that require DI.
            builder.RegisterModelBinders(typeof(WebApiApplication).Assembly);
            builder.RegisterModelBinderProvider();

            // OPTIONAL: Register web abstractions like HttpContextBase.
            builder.RegisterModule <AutofacWebTypesModule>();

            // OPTIONAL: Enable property injection in view pages.
            builder.RegisterSource(new ViewRegistrationSource());

            // OPTIONAL: Enable property injection into action filters.
            builder.RegisterFilterProvider();

            // OPTIONAL: Enable action method parameter injection (RARE).
            //  builder.InjectActionInvoker();

            //DEPENDENCIAS DE LA APLICACION
            // APPLICATION SERVICE
            builder.RegisterType <PersonaQueryService>().As <IPersonaQueryService>().InstancePerRequest();
            builder.RegisterType <PersonaCommandService>().As <IPersonaCommandService>().InstancePerRequest();

            //* INFRASTRUCTURE

            //CacheRepository for Ad
            builder.RegisterType <InfrastructureCache.HttpRuntimeCache <IEnumerable <Domain.Core.Model.Persona.Persona> > >().As <ICache <IEnumerable <Domain.Core.Model.Persona.Persona> > >().InstancePerRequest();

            //Sql connection type & connectionString
            builder.RegisterType <Infrastructure.Persistence.SQL.SqlConnectionFactory>()
            .As <Infrastructure.Persistence.SQL.IConnectionFactory>()
            .WithParameter("connectionString", System.Configuration.ConfigurationManager.ConnectionStrings["BDANIMALESEntities"].ConnectionString)
            .InstancePerRequest();

            builder.RegisterType <Infrastructure.Persistence.SQL.Persona.PersonaQueryRepository>().As <IPersonaQueryRepository>().InstancePerRequest();
            builder.RegisterType <Infrastructure.Persistence.SQL.Persona.PersonaCommandRepository>().As <IPersonaCommnadRepository>().InstancePerRequest();
            //*

            //DOMAIN SERVICES - ACL

            //ACL for external API façade
            //builder.RegisterType<ACL.PostalCodeAdapter>().As<Domain.Core.Services.IPostalCodeAdapter>().InstancePerRequest();
            //builder.RegisterType<ACL.PostalCodeTranslator>().As<Domain.Core.Services.IPostalCodeTranslator>().InstancePerRequest();
            //*
            //*


            //MEDIATR
            builder.RegisterSource(new ContravariantRegistrationSource());
            builder.RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly).AsImplementedInterfaces();

            builder.RegisterAssemblyTypes(typeof(Models.Command.Persona.PersonaCommand).GetTypeInfo().Assembly).AsImplementedInterfaces();
            builder.RegisterAssemblyTypes(typeof(Models.Query.Persona.PersonaQuery).GetTypeInfo().Assembly).AsImplementedInterfaces();


            builder.Register <ServiceFactory>(ctx =>
            {
                var c = ctx.Resolve <IComponentContext>();
                return(t => c.Resolve(t));
            });

            builder.Register <ServiceFactory>(ctx =>
            {
                var c = ctx.Resolve <IComponentContext>();
                return(t => c.Resolve(t));
            });
            //**


            // Set the dependency resolver to be Autofac.
            var container = builder.Build();

            // GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver((IContainer)container); //Set the WebApi DependencyResolver
            //  config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
            // DependencyResolver.SetResolver(new AutofacDependencyResolver(container));


            //AQUI
            //// Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);
            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            //// Set the dependency resolver for MVC.
            var mvcResolver = new AutofacDependencyResolver(container);
            DependencyResolver.SetResolver(mvcResolver);
            //HASTA AQUI

            #endregion

            DomainEvents.Dispatcher = new Infrastructure.Messaging.MassTransit.Middleware();

            Infrastructure.Messaging.MassTransit.Consumer.PersonaCreated.Listen();
        }
        public static void RegisterMvcResolver(this IContainer container)
        {
            var mvcResolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(mvcResolver);
        }
        public void SetResolver(IContainer container)
        {
            var resolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(resolver);
        }
Exemple #31
0
 public AutofacValidatorFactory(AutofacDependencyResolver resolver)
 {
     _resolver = resolver;
 }
Exemple #32
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            log4net.Config.XmlConfigurator.Configure();

            var builder = new ContainerBuilder();//把当前程序集中的 Controller 都注册,不要忘了.PropertiesAutowired()

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();
            builder.RegisterApiControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();

            Assembly[] assemblies = new Assembly[] { Assembly.Load("IMS.Service") };// 获取所有相关类库的程序集
            builder.RegisterAssemblyTypes(assemblies).
            Where(type => !type.IsAbstract && typeof(IServiceSupport).IsAssignableFrom(type)).AsImplementedInterfaces().PropertiesAutowired();
            //type1.IsAssignableFrom(type2):Assign赋值,type1类型的变量是否可以指向type2类型的对象。也就是type2是否实现type1接口/type2是否继承自type1

            //注册系统级别的 DependencyResolver,这样当 MVC 框架创建 Controller 等对象的时候都是管 Autofac 要对象。
            var container = builder.Build();

            // Set the dependency resolver for MVC.
            var resolver = new AutofacDependencyResolver(container);

            DependencyResolver.SetResolver(resolver);

            // Set the dependency resolver for Web API.
            var webApiResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

            GlobalFilters.Filters.Add(new JsonNetActionFilter());
            GlobalFilters.Filters.Add(new SYSExceptionFilter());
            GlobalFilters.Filters.Add(new SYSAuthorizationFilter());

            Assembly assembly = Assembly.GetExecutingAssembly();
            int?     levelId  = null;
            string   url      = null;
            var      types    = assembly.DefinedTypes.Where(t => t.BaseType == typeof(Controller) && t.Namespace == "IMS.Web.Areas.Admin.Controllers" && t.GetCustomAttribute(typeof(PermControllerAttribute)) != null);

            foreach (var item in types)
            {
                string ctrName  = item.Name.Replace("Controller", "");
                var    typeName = ((PermControllerAttribute)item.GetCustomAttribute(typeof(PermControllerAttribute))).Name;
                var    methods  = item.GetMethods().Where(m => (m.ReturnParameter.ParameterType == typeof(ActionResult) || m.ReturnParameter.ParameterType == typeof(Task <ActionResult>)) && m.GetCustomAttribute(typeof(PermActionAttribute)) != null);
                foreach (var item1 in methods)
                {
                    if (item1 == methods.First())
                    {
                        levelId = 0;
                        var    descName   = ((PermActionAttribute)item1.GetCustomAttribute(typeof(PermActionAttribute))).Name;
                        string actionName = item1.Name;
                        url = "/admin/" + ctrName + "/" + actionName;
                    }
                    else
                    {
                        var    descName   = ((PermActionAttribute)item1.GetCustomAttribute(typeof(PermActionAttribute))).Name;
                        string actionName = item1.Name;
                    }
                }
            }
            // StartQuartz();
        }
Exemple #33
0
 public AutofacDependencyResolverFixture()
 {
     Settings = new AutoFacSettings();
     Target   = new AutofacDependencyResolver(Settings);
 }
        public void GetServicesReturnsRegisteredService()
        {
            var builder = new ContainerBuilder();
            builder.Register(c => new object());
            var container = builder.Build();
            var resolver = new AutofacDependencyResolver(container);

            var services = resolver.GetServices(typeof(object));

            Assert.Equal(1, services.Count());
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="AutoFacContainer"/> class.
 /// </summary>
 /// <param name="container">The container.</param>
 public AutoFacContainer(AutofacDependencyResolver container)
     : base(container)
 {
 }
Exemple #36
0
        /// <summary>
        /// 註冊DI注入物件資料
        /// </summary>
        public static void Register()
        {
            // 容器建立者
            ContainerBuilder builder = new ContainerBuilder();

            builder.RegisterType <MobileHis.Data.MobileHISEntities>().As <DbContext>().InstancePerRequest();
            //builder.Register(c =>
            //    {
            //        if (HttpContext.Current.User != null)
            //            return HttpContext.Current.User as CustomPrincipal;
            //        return new CustomPrincipal();
            //    }).As<CustomPrincipal>().InstancePerRequest();
            //builder.Register(c => HttpContext.Current.User).As<IPrincipal>().InstancePerRequest();
            builder.Register(c => new WrappedPrincipal(HttpContext.Current.User)).As <WrappedPrincipal>().InstancePerRequest();
            //builder.RegisterInstance(HttpContext.Current.User).As<CustomPrincipal>();
            //var user = HttpContext.Current.User as CustomPrincipal;
            //builder.Register(c => user).As<CustomPrincipal>().InstancePerRequest();
            //builder.Register(c => c.Resolve<IPrincipal>() as CustomPrincipal).As<CustomPrincipal>().InstancePerRequest();
            //builder.RegisterType(typeof(HttpContext.Current.User)).As<CustomPrincipal>().InstancePerRequest();
            builder.RegisterType(typeof(EFUnitOfWork)).As <IUnitOfWork>();
            builder.RegisterAssemblyTypes(typeof(Service.ServiceModule).Assembly)
            .Where(t => t.Name.EndsWith("Service"))
            .AsImplementedInterfaces();
            builder.Register <MobileHis.Models.Interface.GetCodeFileSelectList>(ctx => ctx.Resolve <ICodeFileService>().GetDropDownList).As <MobileHis.Models.Interface.GetCodeFileSelectList>();
            builder.Register <MobileHis.Models.ViewModel.AccountCreateView.GetDepartmentList>(ctx => ctx.Resolve <IDepartmentService>().GetCheckBoxList).As <MobileHis.Models.ViewModel.AccountCreateView.GetDepartmentList>();
            builder.Register <MobileHis.Models.ViewModel.AccountCreateView.GetRoleList>(ctx => ctx.Resolve <IRoleService>().GetRoles).As <MobileHis.Models.ViewModel.AccountCreateView.GetRoleList>();
            builder.Register <MobileHis.Models.Areas.Sys.ViewModels.CodeFileViewModel.GetCategoryList>(ctx => ctx.Resolve <ICodeFileService>().GetCategoryList).As <MobileHis.Models.Areas.Sys.ViewModels.CodeFileViewModel.GetCategoryList>();
            builder.RegisterControllers(Assembly.GetExecutingAssembly());
            // 建立容器
            IContainer container = builder.Build();

            // 解析容器內的型別
            //AutofacWebApiDependencyResolver resolverApi = new AutofacWebApiDependencyResolver(container);
            AutofacDependencyResolver resolver = new AutofacDependencyResolver(container);

            // 建立相依解析器
            //GlobalConfiguration.Configuration.DependencyResolver = resolverApi;
            DependencyResolver.SetResolver(resolver);


            //// 第一步,建立ContainerBuilder
            //var builder = new ContainerBuilder();

            //// 開始 第二步,註冊service

            //// 註冊ConsoleLogger這個class為ILogger Service的Component
            //builder.RegisterType<DrugVendorBLL>().As<IDrugVendorBLL>();

            //// 如果寫法是:builder.RegisterType<ConsoleLogger>();
            //// 那麼就是ConsoleLogger這個class為ConsoleLogger Service的Component

            //// 註冊自己實例化出來的物件
            //// 上面是只註冊class type(因此,用到的時候是autofac幫你new出來),這邊是直接用這個object
            //var output = new StringWriter();
            //builder.RegisterInstance(output).As<TextWriter>();

            //// 用lambda 註冊會更有彈性,因為傳進來的c是container的instance,因此可以用c來做一些複雜的東西。
            //builder.Register(c => new ConfigReader("mysection")).As<IConfigReader>();

            //// 假設不想要一個一個註冊,可以用scan的方式。
            //// 下面scan一個assembly所有的type,當那個type的名字最後結尾是Repository的時候,
            //// 把它註冊的service設為這個class的interface
            //builder.RegisterAssemblyTypes(myAssembly)
            // .Where(t => t.Name.EndsWith("Repository"))
            // .AsImplementedInterfaces();

            ////結束 第二步

            //// 第三步,註冊都完成了,建立自己的container
            //var container = builder.Build();

            //// 第四部,從container取得對應的component。
            //// 這邊用using包起來,因為出了這個scope,一切Resolve出來的都會被釋放掉。
            //// 這部份在我們整個系列碰到並不多,因為不建議自己每一個這樣取出來,
            //// 而是用深度整合的方式來讓一切像自動發生。
            //// 詳細之後就會比較清楚
            //using (var scope = container.BeginLifetimeScope())
            //{
            //    var reader = container.Resolve<IConfigReader>();
            //}
        }
Exemple #37
0
        private static void SetupMockLifetimeScopeProvider(ILifetimeScope container)
        {
            var resolver = new AutofacDependencyResolver(container, new StubLifetimeScopeProvider(container));

            DependencyResolver.SetResolver(resolver);
        }
Exemple #38
0
        /// <summary>
        /// 全局句柄初始化
        /// </summary>
        /// <param name="resolver">解析器</param>
        public static ILifetimeScope GlobalInitialize(this AutofacDependencyResolver resolver)
        {
            GlobalHandle <ILifetimeScope> .Initialize(resolver.RequestLifetimeScope);

            return(GlobalHandle <ILifetimeScope> .GetCurrentRef());
        }
Exemple #39
0
        protected virtual ContainerManager RegisterDependencies()
        {
            var builder    = new ContainerBuilder();
            var container  = builder.Build();
            var typeFinder = CreateTypeFinder();

            _containerManager = new ContainerManager(container);

            // core dependencies
            builder = new ContainerBuilder();
            builder.RegisterInstance(this).As <IEngine>();
            builder.RegisterInstance(typeFinder).As <ITypeFinder>();

            // Autofac
            var lifetimeScopeAccessor = new DefaultLifetimeScopeAccessor(container);
            var lifetimeScopeProvider = new DefaultLifetimeScopeProvider(lifetimeScopeAccessor);

            builder.RegisterInstance(lifetimeScopeAccessor).As <ILifetimeScopeAccessor>();
            builder.RegisterInstance(lifetimeScopeProvider).As <ILifetimeScopeProvider>();

            var dependencyResolver = new AutofacDependencyResolver(container, lifetimeScopeProvider);

            builder.RegisterInstance(dependencyResolver);
            DependencyResolver.SetResolver(dependencyResolver);

            // Logging dependencies should be available very early
            builder.RegisterModule(new LoggingModule());

#pragma warning disable 612, 618
            builder.Update(container);
#pragma warning restore 612, 618

            // Propagate logger
            var logger = container.Resolve <ILoggerFactory>().GetLogger("SmartStore.Bootstrapper");
            this.Logger = logger;
            ((AppDomainTypeFinder)typeFinder).Logger = logger;

            // Register dependencies provided by other assemblies
            builder = new ContainerBuilder();
            var registrarTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            var registrarInstances = new List <IDependencyRegistrar>();
            foreach (var type in registrarTypes)
            {
                registrarInstances.Add((IDependencyRegistrar)Activator.CreateInstance(type));
            }

            // Sort
            registrarInstances = registrarInstances.OrderBy(t => t.Order).ToList();
            foreach (var registrar in registrarInstances)
            {
                var type = registrar.GetType();
                logger.DebugFormat("Executing dependency registrar '{0}'", type.FullName);
                registrar.Register(builder, typeFinder, PluginManager.IsActivePluginAssembly(type.Assembly));
            }

#pragma warning disable 612, 618
            builder.Update(container);
#pragma warning restore 612, 618

            return(_containerManager);
        }
        public void CanOverrideDefaultServices()
        {
            var builder = new ContainerBuilder();
            var messageBus = new Mock<IMessageBus>().Object;
            builder.RegisterInstance(messageBus);
            var resolver = new AutofacDependencyResolver(builder.Build());

            var service = resolver.GetService(typeof(IMessageBus));

            Assert.Same(messageBus, service);
        }