Closed
Description
Swashbuckle 4 uses IOptions
pattern, so creating temporary container
is not required anymore.
This can be done using IConfigureOptions
public interface ISwaggerVersionInfoProvider
{
Info GetVersionInfo(ApiVersionDescription apiDescription);
}
public class SwaggerVersionAutoDiscovery : IConfigureOptions<SwaggerGenOptions>
{
private readonly IApiVersionDescriptionProvider _versionDescriptionProvider;
private readonly ISwaggerVersionInfoProvider _swaggerVersionInfoProvider;
public SwaggerVersionAutoDiscovery(IApiVersionDescriptionProvider versionDescriptionProvider,
ISwaggerVersionInfoProvider swaggerVersionInfoProvider)
{
_versionDescriptionProvider = versionDescriptionProvider ?? throw new ArgumentNullException(nameof(versionDescriptionProvider));
_swaggerVersionInfoProvider = swaggerVersionInfoProvider ?? throw new ArgumentNullException(nameof(swaggerVersionInfoProvider));
}
public void Configure(SwaggerGenOptions options)
{
foreach (var description in _versionDescriptionProvider.ApiVersionDescriptions)
{
options.SwaggerDoc(description.GroupName, _swaggerVersionInfoProvider.GetVersionInfo(description));
}
}
}
Startup.cs code
// todo: register your ISwaggerVersionInfoProvider implementation
// services.Add(...);
// Add SwaggerGenOptions configurator
services.AddTransient<IConfigureOptions<SwaggerGenOptions>, SwaggerVersionAutoDiscovery>();