public void Initialize(ExtensionConfigContext context)
        {
            context.AddBindingRule <SwashBuckleClientAttribute>()
            .Bind(new SwashBuckleClientBindingProvider(this));

            var services = new ServiceCollection();

            services.AddSingleton <IApiDescriptionGroupCollectionProvider>(_apiDescriptionGroupCollectionProvider);
            services.AddSwaggerGen(options =>
            {
                if (_option.Documents.Length == 0)
                {
                    var defaultDocument = new OptionDocument();
                    AddSwaggerDocument(options, defaultDocument);
                }
                else
                {
                    foreach (var optionDocument in _option.Documents)
                    {
                        AddSwaggerDocument(options, optionDocument);
                    }
                }

                options.DescribeAllEnumsAsStrings();

                if (!string.IsNullOrWhiteSpace(_xmlPath))
                {
                    options.IncludeXmlComments(_xmlPath);
                }
                options.OperationFilter <FunctionsOperationFilter>();
                options.OperationFilter <QueryStringParameterAttributeFilter>();
            });

            _serviceProvider = services.BuildServiceProvider(true);
        }
 private static void AddSwaggerDocument(SwaggerGenOptions options, OptionDocument document)
 {
     options.SwaggerDoc(document.Name, new Info
     {
         Title       = document.Title,
         Version     = document.Version,
         Description = document.Description,
     });
 }