예제 #1
0
        /// <summary>
        /// Adds a delegate that configures application logging.
        /// </summary>
        public static ICommandLineHostBuilder ConfigureLogging(this ICommandLineHostBuilder builder, Action <ILoggingBuilder> configureLogging)
        {
            if (configureLogging == null)
            {
                throw new ArgumentNullException(nameof(configureLogging));
            }

            return(builder.ConfigureServices(services => services.AddLogging(configureLogging)));
        }
예제 #2
0
        /// <summary>
        /// Adds a delegate that configures the application.
        /// </summary>
        public static ICommandLineHostBuilder Configure(this ICommandLineHostBuilder builder, Action <IApplicationBuilder> configureApp)
        {
            if (configureApp == null)
            {
                throw new ArgumentNullException(nameof(configureApp));
            }

            return(builder.UseSetting(HostDefaults.ApplicationNameKey, configureApp.Method.DeclaringType.Assembly.GetName().Name)
                   .ConfigureServices(services =>
            {
                var startupDescriptor = services.SingleOrDefault(s => s.ImplementationType.IsDelegateStartupType());
                if (startupDescriptor != null)
                {
                    services.Remove(startupDescriptor);
                }

                services.AddSingleton <IStartup>(new DelegateStartup <IServiceCollection>
                {
                    ConfigureApp = configureApp
                });
            }));
        }
예제 #3
0
        /// <summary>
        /// Adds a delegate that configures a custom service container.
        /// </summary>
        public static ICommandLineHostBuilder ConfigureContainer <TContainerBuilder>(this ICommandLineHostBuilder builder, Action <TContainerBuilder> configureContainer)
        {
            if (configureContainer == null)
            {
                throw new ArgumentNullException(nameof(configureContainer));
            }

            return(builder.ConfigureServices(services =>
            {
                var startupDescriptor = services.SingleOrDefault(s => s.ImplementationType.IsDelegateStartupType());
                if (startupDescriptor != null)
                {
                    services.Remove(startupDescriptor);
                }

                var startup = startupDescriptor?.ImplementationInstance as IStartup;
                services.AddSingleton <IStartup>(new DelegateStartup <TContainerBuilder>
                {
                    ConfigureApp = b => startup?.Configure(b),
                    ConfigureContainerBuilder = configureContainer
                });
            }));
        }
예제 #4
0
 /// <summary>
 /// Specifies the startup class to use to configure an application.
 /// </summary>
 public static ICommandLineHostBuilder UseStartup <TStartup>(this ICommandLineHostBuilder builder) where TStartup : class, IStartup
 {
     return(builder.UseSetting(HostDefaults.ApplicationNameKey, typeof(TStartup).Assembly.GetName().Name)
            .ConfigureServices(services => services.AddSingleton <IStartup, TStartup>()));
 }