internal SwashbuckleOptions GetSwashbuckleOptions()
        {
            AddGlobalDocumentFilters();
            AddODataDocumentFilters();

            var swaggerProviderOptions = new SwaggerProviderOptions(
                _swaggerDocsConfig.GetFieldValue <Func <ApiDescription, string, bool> >("_versionSupportResolver"),
                _swaggerDocsConfig.GetFieldValue <IEnumerable <string> >("_schemes"),
                _swaggerDocsConfig.GetSecurityDefinitions(),
                _swaggerDocsConfig.GetFieldValue <bool>("_ignoreObsoleteActions"),
                _swaggerDocsConfig.GetFieldValue <Func <ApiDescription, string> >("_groupingKeySelector"),
                _swaggerDocsConfig.GetFieldValue <IComparer <string> >("_groupingKeyComparer"),
                GetODataCustomSchemaMappings(),
                _swaggerDocsConfig.GetFieldValue <IEnumerable <Func <ISchemaFilter> > >("_schemaFilters", true).Select(factory => factory()),
                _swaggerDocsConfig.GetFieldValue <IList <Func <IModelFilter> > >("_modelFilters", true).Select(factory => factory()).ToList(),
                _swaggerDocsConfig.GetFieldValue <bool>("_ignoreObsoleteProperties"),
                _swaggerDocsConfig.GetFieldValue <Func <Type, string> >("_schemaIdSelector"),
                _swaggerDocsConfig.GetFieldValue <bool>("_describeAllEnumsAsStrings"),
                _swaggerDocsConfig.GetFieldValue <bool>("_describeStringEnumsInCamelCase"),
                GetODataOperationFilters(),
                GetODataDocumentFilters(),
                _swaggerDocsConfig.GetFieldValue <Func <IEnumerable <ApiDescription>, ApiDescription> >("_conflictingActionsResolver"),
                _swaggerDocsConfig.GetFieldValue <bool>("_applyFiltersToAllSchemas"),
                _swaggerDocsConfig.GetFieldValue <IEnumerable <Func <XPathDocument> > >("_xmlDocFactories").Select(factory => factory).ToList()
                );

            return(new SwashbuckleOptions(swaggerProviderOptions));
        }
        public static SwaggerProviderOptions GetSwaggerProviderOptions(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            AddGlobalDocumentFilters(swaggerDocsConfig);

            return new SwaggerProviderOptions(
                swaggerDocsConfig.GetFieldValue<Func<ApiDescription, string, bool>>("_versionSupportResolver"),
                swaggerDocsConfig.GetFieldValue<IEnumerable<string>>("_schemes"),
                swaggerDocsConfig.GetSecurityDefinitions(),
                swaggerDocsConfig.GetFieldValue<bool>("_ignoreObsoleteActions"),
                swaggerDocsConfig.GetFieldValue<Func<ApiDescription, string>>("_groupingKeySelector"),
                swaggerDocsConfig.GetFieldValue<IComparer<string>>("_groupingKeyComparer"),
                GetODataCustomSchemaMappings(swaggerDocsConfig),
                swaggerDocsConfig.GetFieldValue<IList<Func<ISchemaFilter>>>("_schemaFilters", true).Select(factory => factory()),
                swaggerDocsConfig.GetFieldValue<IList<Func<IModelFilter>>>("_modelFilters", true).Select(factory => factory()),
                swaggerDocsConfig.GetFieldValue<bool>("_ignoreObsoleteProperties"),
                swaggerDocsConfig.GetFieldValue<Func<Type, string>>("_schemaIdSelector"),
                swaggerDocsConfig.GetFieldValue<bool>("_describeAllEnumsAsStrings"),
                swaggerDocsConfig.GetFieldValue<bool>("_describeStringEnumsInCamelCase"),
                GetODataOperationFilters(swaggerDocsConfig),
                GetODataDocumentFilters(swaggerDocsConfig),
                swaggerDocsConfig.GetFieldValue<Func<IEnumerable<ApiDescription>, ApiDescription>>("_conflictingActionsResolver")
            );
        }
        public static SwaggerProviderOptions GetSwaggerProviderOptions(SwaggerDocsConfig swaggerDocsConfig)
        {
            Contract.Requires(swaggerDocsConfig != null);

            AddInternalDocumentFilters(swaggerDocsConfig);
            AddInternalOperationFilters(swaggerDocsConfig);

            return(new SwaggerProviderOptions(
                       swaggerDocsConfig.GetFieldValue <Func <ApiDescription, string, bool> >("_versionSupportResolver"),
                       swaggerDocsConfig.GetFieldValue <IEnumerable <string> >("_schemes"),
                       swaggerDocsConfig.GetSecurityDefinitions(),
                       swaggerDocsConfig.GetFieldValue <bool>("_ignoreObsoleteActions"),
                       swaggerDocsConfig.GetFieldValue <Func <ApiDescription, string> >("_groupingKeySelector"),
                       swaggerDocsConfig.GetFieldValue <IComparer <string> >("_groupingKeyComparer"),
                       swaggerDocsConfig.GetFieldValue <IDictionary <Type, Func <Schema> > >("_customSchemaMappings"),
                       swaggerDocsConfig.GetFieldValue <IList <Func <ISchemaFilter> > >("_schemaFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <IList <Func <IModelFilter> > >("_modelFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <bool>("_ignoreObsoleteProperties"),
                       swaggerDocsConfig.GetFieldValue <Func <Type, string> >("_schemaIdSelector"),
                       swaggerDocsConfig.GetFieldValue <bool>("_describeAllEnumsAsStrings"),
                       swaggerDocsConfig.GetFieldValue <bool>("_describeStringEnumsInCamelCase"),
                       swaggerDocsConfig.GetFieldValue <IList <Func <IOperationFilter> > >("_operationFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <IList <Func <IDocumentFilter> > >("_documentFilters", true).Select(factory => factory()),
                       swaggerDocsConfig.GetFieldValue <Func <IEnumerable <ApiDescription>, ApiDescription> >("_conflictingActionsResolver")
                       ));
        }