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;
            }
        }
예제 #2
0
 private static void ConfigureModule(IContainerConfigurator configurator, IUnityContainer container)
 {
     if (configurator != null)
     {
         configurator.Configure(container);
     }
 }
예제 #3
0
        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());
        }
예제 #4
0
        protected override void ConfigureContainer(ContainerBuilder builder, IServiceCollection services)
        {
            base.ConfigureContainer(builder, services);

            _containerConfigurator?.Configure(builder);
        }