/// <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(); } }
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)); }