public static IWebHostBuilder PrepareConsoleAppFrameworkMiddleware(this IWebHostBuilder builder, ConsoleAppOptions?options = null)
        {
            var consoleAppTypes = CollectConsoleAppTypes();
            var target          = new TargetConsoleAppTypeCollection(consoleAppTypes);

            return(builder
                   .ConfigureServices(services =>
            {
                services.AddSingleton <ConsoleAppOptions>(options ?? new ConsoleAppOptions());
                services.AddSingleton <TargetConsoleAppTypeCollection>(target);
                foreach (var item in target)
                {
                    services.AddTransient(item);
                }
            }));
        }
        public static IWebHostBuilder PrepareConsoleAppFrameworkMiddleware(this IWebHostBuilder builder, IConsoleAppInterceptor?interceptor = null)
        {
            var consoleAppTypes = CollectConsoleAppTypes();
            var target          = new TargetConsoleAppTypeCollection(consoleAppTypes);

            return(builder
                   .ConfigureServices(services =>
            {
                services.AddSingleton <IConsoleAppInterceptor>(interceptor ?? NullConsoleAppInterceptor.Default);
                services.AddSingleton <TargetConsoleAppTypeCollection>(target);
                foreach (var item in target)
                {
                    services.AddTransient(item);
                }
            }));
        }