コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AutofacBootStartup"/> class.
        /// </summary>
        /// <param name="loggerFactory">The logger factory.</param>
        /// <param name="environment">The environment.</param>
        /// <param name="taskResolver">The task resolver.</param>
        /// <param name="taskOrderer">The task orderer.</param>
        /// <param name="containerConfiguration">The container configuration.</param>
        public AutofacBootStartup(
            ILoggerFactory loggerFactory,
            IHostingEnvironment environment,
            ITaskResolver taskResolver,
            ITaskOrderer taskOrderer,
            IContainerConfiguration containerConfiguration)
        {
            if (taskResolver == null)
            {
                throw new ArgumentNullException(nameof(taskResolver));
            }

            if (taskOrderer == null)
            {
                throw new ArgumentNullException(nameof(taskOrderer));
            }

            this.loggerFactory          = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
            this.hostingEnvironment     = environment ?? throw new ArgumentNullException(nameof(environment));
            this.startupHelper          = new AutofacBootStartupHelper(taskResolver, taskOrderer);
            this.Configuration          = this.startupHelper.GetConfiguration(environment);
            this.containerConfiguration = containerConfiguration ?? throw new ArgumentNullException(nameof(containerConfiguration));
        }
コード例 #2
0
        /// <summary>
        /// Creates the web host builder.
        /// </summary>
        /// <param name="arguments">The arguments.</param>
        /// <param name="taskResolver">The task resolver.</param>
        /// <param name="taskOrderer">The task orderer.</param>
        /// <param name="containerConfiguration">The container configuration.</param>
        /// <param name="appBuilderConfigurations">The application builder configurations.</param>
        /// <param name="exceptionHandler">The exception handler.</param>
        /// <returns>The web host builder.</returns>
        public IWebHostBuilder Create(
            string[] arguments,
            ITaskResolver taskResolver,
            ITaskOrderer taskOrderer,
            IContainerConfiguration containerConfiguration,
            IDictionary <string, IAppBuilderConfiguration> appBuilderConfigurations,
            Func <Exception, ILoggerFactory, bool> exceptionHandler)
        {
            var hostBuilder = arguments == null
                ? Microsoft.AspNetCore.WebHost.CreateDefaultBuilder()
                : Microsoft.AspNetCore.WebHost.CreateDefaultBuilder(arguments);

            var webHostBuilder = hostBuilder.ConfigureServices(services =>
            {
                services.AddSingleton(taskResolver ?? AssemblyTaskResolver.Default);
                services.AddSingleton(taskOrderer ?? new NumberedTaskOrderer());
                services.AddSingleton(containerConfiguration ?? new NullContainerConfiguration());
                services.AddSingleton <IAppBuilderConfigurationResolver>(new DefaultAppBuilderConfigurationResolver(appBuilderConfigurations));
                services.AddAutofac();
            })
                                 .UseStartup <AutofacBootStartup>();

            return(new WebHostBuilder(webHostBuilder, exceptionHandler));
        }
コード例 #3
0
 /// <inheritdoc />
 public IAutofacBootBuilder WithOrder(ITaskOrderer taskOrderer)
 {
     this.currentTaskOrderer = taskOrderer ?? throw new ArgumentNullException(nameof(taskOrderer));
     return(this);
 }
コード例 #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AutofacBootBuilder"/> class.
 /// </summary>
 /// <param name="taskOrderer">The task orderer.</param>
 public AutofacBootBuilder(ITaskOrderer taskOrderer)
 {
     this.WithOrder(taskOrderer);
 }
コード例 #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OrderedTaskResolver"/> class.
 /// </summary>
 /// <param name="taskResolver">The task resolver.</param>
 /// <param name="taskOrderer">The task orderer.</param>
 public OrderedTaskResolver(ITaskResolver taskResolver, ITaskOrderer taskOrderer)
 {
     this.taskResolver = taskResolver ?? throw new ArgumentNullException(nameof(taskResolver));
     this.taskOrderer  = taskOrderer ?? throw new ArgumentNullException(nameof(taskOrderer));
 }
コード例 #6
0
 /// <summary>
 /// Adds the order.
 /// </summary>
 /// <param name="taskOrderer">The task orderer.</param>
 /// <returns>The builder.</returns>
 public IAutofacBootBuilder WithOrder(ITaskOrderer taskOrderer)
 {
     return(new AutofacBootBuilder(taskOrderer));
 }
コード例 #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AutofacBootStartupHelper"/> class.
 /// </summary>
 /// <param name="taskResolver">The task resolver.</param>
 /// <param name="taskOrderer">The task orderer.</param>
 public AutofacBootStartupHelper(ITaskResolver taskResolver, ITaskOrderer taskOrderer)
 {
     this.currentTaskResolver = new OrderedTaskResolver(taskResolver, taskOrderer);
     this.currentTaskOrderer  = taskOrderer ?? throw new ArgumentNullException(nameof(taskOrderer));
 }