static void ConfigureContainer() { if (!IsInitialized) { var configTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(asm => asm.GetTypes().Where(type => type.GetInterface("IContainerConfigurator") == typeof(IContainerConfigurator))) .ToList(); if (configTypes.Count() == 0) { throw new InvalidOperationException($"{nameof(DependencyInjection)} could not locate {nameof(IContainerConfigurator)}"); } else if (configTypes.Count > 1) { throw new InvalidOperationException($"{nameof(DependencyInjection)} found multiple {nameof(IContainerConfigurator)}"); } IContainerConfigurator configurator = null; try { configurator = (IContainerConfigurator)Activator.CreateInstance(configTypes.Single()); } catch (Exception exn) { throw new InvalidOperationException($"{nameof(DependencyInjection)} could not create instance of {nameof(IContainerConfigurator)}", exn); } var services = new ServiceCollection(); configurator.Configure(services); serviceProvider = services.BuildServiceProvider(); IsInitialized = true; } }
private static void ConfigureModule(IContainerConfigurator configurator, IUnityContainer container) { if (configurator != null) { configurator.Configure(container); } }
protected IContainer CreateScope( ICakeConfiguration configuration, IRemainingArguments arguments, Action <ICakeContainerRegistrar> action = null) { var registrar = new AutofacTypeRegistrar(new ContainerBuilder()); _configurator.Configure(registrar, configuration, arguments); action?.Invoke(registrar); return(registrar.BuildContainer()); }
protected override void ConfigureContainer(ContainerBuilder builder, IServiceCollection services) { base.ConfigureContainer(builder, services); _containerConfigurator?.Configure(builder); }