Skip to content

Commit c36e798

Browse files
committed
OpenAPI: Make it easier to register custom services in the IoC container
1 parent f90d023 commit c36e798

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

Diff for: src/JsonApiDotNetCore.OpenApi/ServiceCollectionExtensions.cs

+8-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.AspNetCore.Mvc.ApiExplorer;
77
using Microsoft.AspNetCore.Mvc.Infrastructure;
88
using Microsoft.Extensions.DependencyInjection;
9+
using Microsoft.Extensions.DependencyInjection.Extensions;
910
using Swashbuckle.AspNetCore.Swagger;
1011
using Swashbuckle.AspNetCore.SwaggerGen;
1112

@@ -34,9 +35,9 @@ public static void AddOpenApi(this IServiceCollection services, IMvcCoreBuilder
3435

3536
private static void AddCustomApiExplorer(IServiceCollection services, IMvcCoreBuilder mvcBuilder)
3637
{
37-
services.AddSingleton<ResourceFieldValidationMetadataProvider>();
38+
services.TryAddSingleton<ResourceFieldValidationMetadataProvider>();
3839

39-
services.AddSingleton<IApiDescriptionGroupCollectionProvider>(provider =>
40+
services.TryAddSingleton<IApiDescriptionGroupCollectionProvider>(provider =>
4041
{
4142
var controllerResourceMapping = provider.GetRequiredService<IControllerResourceMapping>();
4243
var actionDescriptorCollectionProvider = provider.GetRequiredService<IActionDescriptorCollectionProvider>();
@@ -76,8 +77,8 @@ private static void AddSwaggerGenerator(IServiceScope scope, IServiceCollection
7677

7778
private static void AddSchemaGenerator(IServiceCollection services)
7879
{
79-
services.AddSingleton<SchemaGenerator>();
80-
services.AddSingleton<ISchemaGenerator, JsonApiSchemaGenerator>();
80+
services.TryAddSingleton<SchemaGenerator>();
81+
services.TryAddSingleton<ISchemaGenerator, JsonApiSchemaGenerator>();
8182
}
8283

8384
private static void SetOperationInfo(SwaggerGenOptions swaggerGenOptions, IControllerResourceMapping controllerResourceMapping,
@@ -114,10 +115,10 @@ private static void SetSchemaIdSelector(SwaggerGenOptions swaggerGenOptions, IRe
114115

115116
private static void AddCustomSwaggerComponents(IServiceCollection services)
116117
{
117-
services.AddSingleton<SwaggerGenerator>();
118-
services.AddSingleton<ISwaggerProvider, CachingSwaggerGenerator>();
118+
services.TryAddSingleton<SwaggerGenerator>();
119+
services.TryAddSingleton<ISwaggerProvider, CachingSwaggerGenerator>();
119120

120-
services.AddSingleton<ISerializerDataContractResolver, JsonApiDataContractResolver>();
121+
services.TryAddSingleton<ISerializerDataContractResolver, JsonApiDataContractResolver>();
121122
}
122123

123124
private static void AddSwashbuckleCliCompatibility(IServiceScope scope, IMvcCoreBuilder mvcBuilder)

0 commit comments

Comments
 (0)