예제 #1
0
 /// <summary>
 /// 构建服务并设置MVC平台的Resolver
 /// </summary>
 /// <param name="services">服务映射信息集合</param>
 /// <param name="assemblies">程序集集合</param>
 /// <returns>服务提供者</returns>
 protected override IServiceProvider BuildAndSetResolver(IServiceCollection services, Assembly[] assemblies)
 {
     ContainerBuilder builder = new ContainerBuilder();
     builder.RegisterControllers(assemblies).AsSelf().PropertiesAutowired();
     builder.RegisterFilterProvider();
     builder.Populate(services);
     IContainer container = builder.Build();
     IDependencyResolver resolver = new AutofacDependencyResolver(container);
     DependencyResolver.SetResolver(resolver);
     return resolver.GetService<IServiceProvider>();
 }
        protected void Application_Start()
        {
            CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
            {
                string configuration = RoleEnvironment.IsAvailable ?
                    RoleEnvironment.GetConfigurationSettingValue(configName) :
                    ConfigurationManager.AppSettings[configName];

                configSetter(configuration);
            });

            // Setup AutoFac
            var builder = new ContainerBuilder();
            this.DependencySetup(builder);
            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Setup WCF Web API Config
            var resolver = new AutofacDependencyResolver(container);
            GlobalConfiguration.Configuration.ServiceResolver.SetResolver(
                t => resolver.GetService(t), t => resolver.GetServices(t));

            AreaRegistration.RegisterAllAreas();

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

            FederatedAuthentication.ServiceConfigurationCreated += this.OnServiceConfigurationCreated;

            // Call Initializers
            var initializers = DependencyResolver.Current.GetServices<IStorageInitializer>();
            foreach (var initializer in initializers)
            {
                initializer.Initialize();
            }
        }
예제 #3
0
파일: Bootstrapper.cs 프로젝트: kanaga/MVC
        private static void SetAutofacWebAPIServices()
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<DefaultCommandBus>().As<ICommandBus>().InstancePerHttpRequest();
            builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerHttpRequest();
            builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerHttpRequest();
            builder.RegisterAssemblyTypes(typeof(CategoryRepository).Assembly)
            .Where(t => t.Name.EndsWith("Repository"))
            .AsImplementedInterfaces().InstancePerHttpRequest();
            var services = Assembly.Load("EFMVC.Domain");
            builder.RegisterAssemblyTypes(services)
            .AsClosedTypesOf(typeof(ICommandHandler<>)).InstancePerHttpRequest();
            builder.RegisterAssemblyTypes(services)
            .AsClosedTypesOf(typeof(IValidationHandler<>)).InstancePerHttpRequest();

            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            IContainer container = builder.Build();

            var resolver = new AutofacDependencyResolver(container);

            GlobalConfiguration.Configuration.ServiceResolver.SetResolver(
                t => resolver.GetService(t),
                t => resolver.GetServices(t));
        }
        public void GetServiceReturnsRegisteredService()
        {
            var builder = new ContainerBuilder();
            builder.Register(c => new object());
            var container = builder.Build();
            var lifetimeScopeProvider = new StubLifetimeScopeProvider(container);
            var resolver = new AutofacDependencyResolver(container, lifetimeScopeProvider);

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

            Assert.That(service, Is.Not.Null);
        }
        public void ConfigurationActionInvokedForNestedLifetime()
        {
            var container = new ContainerBuilder().Build();
            Action<ContainerBuilder> configurationAction = builder => builder.Register(c => new object());
            var lifetimeScopeProvider = new StubLifetimeScopeProvider(container);
            var resolver = new AutofacDependencyResolver(container, lifetimeScopeProvider, configurationAction);

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

            Assert.That(service, Is.Not.Null);
            Assert.That(services.Count(), Is.EqualTo(1));
        }