namespace Swagger;
///
/// swagger注释加载慢,把文档添加到缓存
///
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ISwaggerProvider))]
public class CachingSwaggerProvider : ISwaggerProvider, ITransientDependency
{
private static readonly ConcurrentDictionary _cache = new ConcurrentDictionary();
private readonly SwaggerGenerator _swaggerGenerator;
public CachingSwaggerProvider(
IOptions optionsAccessor,
IApiDescriptionGroupCollectionProvider apiDescriptionsProvider,
ISchemaGenerator schemaGenerator)
{
_swaggerGenerator = new SwaggerGenerator(optionsAccessor.Value, apiDescriptionsProvider, schemaGenerator);
}
public OpenApiDocument GetSwagger(string documentName, string host = null, string basePath = null)
{
return _cache.GetOrAdd(documentName, (_) => _swaggerGenerator.GetSwagger(documentName, host, basePath));
}
}