From e63c46317a54ef55eadd1d3b3a4770d87beb8e44 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 5 Jan 2019 14:19:12 +0100 Subject: [PATCH] Simplified DI registration --- .../Extensions/ServiceCollectionExtensions.cs | 5 ++- .../Extensions/ServiceCollectionExtensions.cs | 17 +++---- .../Extensions/ServiceCollectionExtensions.cs | 5 ++- .../Extensions/ServiceCollectionExtensions.cs | 7 ++- .../Extensions/ServiceCollectionExtensions.cs | 45 ++++++++++--------- .../Extensions/ServiceCollectionExtensions.cs | 3 ++ src/samples/SampleHost.Web/Startup.cs | 11 ++--- .../Elsa.Web.Activities.Console/Startup.cs | 2 +- .../Elsa.Web.Activities.Http/Startup.cs | 2 +- .../Elsa.Web.Activities.Primitives/Startup.cs | 2 +- 10 files changed, 53 insertions(+), 46 deletions(-) diff --git a/src/activities/Elsa.Activities.Console/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Console/Extensions/ServiceCollectionExtensions.cs index 54cb5ad21..c81a26035 100644 --- a/src/activities/Elsa.Activities.Console/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Console/Extensions/ServiceCollectionExtensions.cs @@ -6,14 +6,15 @@ namespace Elsa.Activities.Console.Extensions { public static class ServiceCollectionExtensions { - public static IServiceCollection AddConsoleDescriptors(this IServiceCollection services) + public static IServiceCollection AddConsoleWorkflowDescriptors(this IServiceCollection services) { return services.AddActivityDescriptors(); } - public static IServiceCollection AddConsoleDrivers(this IServiceCollection services) + public static IServiceCollection AddConsoleWorkflowDrivers(this IServiceCollection services) { return services + .AddConsoleWorkflowDescriptors() .AddActivityDriver() .AddActivityDriver(); } diff --git a/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs index 1913eaa9a..e1fa305c5 100644 --- a/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Http/Extensions/ServiceCollectionExtensions.cs @@ -1,3 +1,4 @@ +using AspNetCore.AsyncInitialization; using Elsa.Activities.Http.Drivers; using Elsa.Activities.Http.Initialization; using Elsa.Activities.Http.Services; @@ -11,19 +12,19 @@ namespace Elsa.Activities.Http.Extensions { public static class ServiceCollectionExtensions { - public static IServiceCollection AddHttpDescriptors(this IServiceCollection services) + public static IServiceCollection AddHttpWorkflowDescriptors(this IServiceCollection services) { return services.AddActivityDescriptors(); } - - public static IServiceCollection AddHttpDrivers(this IServiceCollection services) - { - services - .AddSingleton() - .AddAsyncInitializer() - .AddActivityDriver(); + public static IServiceCollection AddHttpWorkflowDrivers(this IServiceCollection services) + { + services.TryAddSingleton(); + services.AddAsyncInitialization(); + services.TryAddTransient(); + services.AddActivityDriver(); services.TryAddSingleton(); + return services; } } diff --git a/src/activities/Elsa.Activities.Primitives/Extensions/ServiceCollectionExtensions.cs b/src/activities/Elsa.Activities.Primitives/Extensions/ServiceCollectionExtensions.cs index 72d76de36..2bc466d32 100644 --- a/src/activities/Elsa.Activities.Primitives/Extensions/ServiceCollectionExtensions.cs +++ b/src/activities/Elsa.Activities.Primitives/Extensions/ServiceCollectionExtensions.cs @@ -6,14 +6,15 @@ namespace Elsa.Activities.Primitives.Extensions { public static class ServiceCollectionExtensions { - public static IServiceCollection AddPrimitiveDescriptors(this IServiceCollection services) + public static IServiceCollection AddPrimitiveWorkflowDescriptors(this IServiceCollection services) { return services.AddActivityDescriptors(); } - public static IServiceCollection AddPrimitiveDrivers(this IServiceCollection services) + public static IServiceCollection AddPrimitiveWorkflowDrivers(this IServiceCollection services) { return services + .AddPrimitiveWorkflowDescriptors() .AddActivityDriver() .AddActivityDriver() .AddActivityDriver(); diff --git a/src/core/Elsa.Abstractions/Extensions/ServiceCollectionExtensions.cs b/src/core/Elsa.Abstractions/Extensions/ServiceCollectionExtensions.cs index 089f2c04c..a83d8a727 100644 --- a/src/core/Elsa.Abstractions/Extensions/ServiceCollectionExtensions.cs +++ b/src/core/Elsa.Abstractions/Extensions/ServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; namespace Elsa.Extensions { @@ -7,13 +8,15 @@ namespace Elsa.Extensions public static IServiceCollection AddActivityDescriptors(this IServiceCollection services) where T : class, IActivityDescriptorProvider { - return services.AddSingleton(); + services.TryAddSingleton(); + return services; } public static IServiceCollection AddActivityDriver(this IServiceCollection services) where T : class, IActivityDriver { - return services.AddSingleton(); + services.TryAddSingleton(); + return services; } } } \ No newline at end of file diff --git a/src/core/Elsa.Core/Extensions/ServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/ServiceCollectionExtensions.cs index a71f87a6b..e35f474f6 100644 --- a/src/core/Elsa.Core/Extensions/ServiceCollectionExtensions.cs +++ b/src/core/Elsa.Core/Extensions/ServiceCollectionExtensions.cs @@ -4,6 +4,7 @@ using Elsa.Serialization; using Elsa.Serialization.Formatters; using Elsa.Serialization.Tokenizers; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; namespace Elsa.Extensions { @@ -11,31 +12,33 @@ namespace Elsa.Extensions { public static IServiceCollection AddWorkflowsCore(this IServiceCollection services) { - return services - .AddSingleton() - .AddScoped() - .AddScoped() - .AddScoped() - .AddScoped() - .AddActivityDescriptors() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton(); + services.TryAddSingleton(); + services.TryAddScoped(); + services.TryAddScoped(); + services.TryAddScoped(); + services.TryAddScoped(); + services.AddActivityDescriptors(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + + return services; } public static IServiceCollection AddWorkflowsInvoker(this IServiceCollection services) { - return services - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton() - .AddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + + return services; } } } \ No newline at end of file diff --git a/src/core/Elsa.Runtime/Extensions/ServiceCollectionExtensions.cs b/src/core/Elsa.Runtime/Extensions/ServiceCollectionExtensions.cs index 1f01f9f45..db9ebcc98 100644 --- a/src/core/Elsa.Runtime/Extensions/ServiceCollectionExtensions.cs +++ b/src/core/Elsa.Runtime/Extensions/ServiceCollectionExtensions.cs @@ -1,3 +1,4 @@ +using Elsa.Extensions; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Runtime.Extensions @@ -7,6 +8,8 @@ namespace Elsa.Runtime.Extensions public static IServiceCollection AddWorkflowsHost(this IServiceCollection services) { return services + .AddWorkflowsCore() + .AddWorkflowsInvoker() .AddScoped(); } } diff --git a/src/samples/SampleHost.Web/Startup.cs b/src/samples/SampleHost.Web/Startup.cs index 3f68ff716..0965f59b9 100644 --- a/src/samples/SampleHost.Web/Startup.cs +++ b/src/samples/SampleHost.Web/Startup.cs @@ -25,16 +25,11 @@ namespace SampleHost.Web { services .AddLocalization() - .AddWorkflowsCore() - .AddWorkflowsInvoker() .AddWorkflowsHost() .AddWorkflowsFileSystemPersistence(Configuration.GetSection("FileStore")) - .AddPrimitiveDrivers() - .AddPrimitiveDescriptors() - .AddConsoleDrivers() - .AddConsoleDescriptors() - .AddHttpDrivers() - .AddHttpDescriptors(); + .AddPrimitiveWorkflowDrivers() + .AddConsoleWorkflowDrivers() + .AddHttpWorkflowDrivers(); services .AddMvc() diff --git a/src/web/modules/Elsa.Web.Activities.Console/Startup.cs b/src/web/modules/Elsa.Web.Activities.Console/Startup.cs index ec87962fd..543eb4d90 100644 --- a/src/web/modules/Elsa.Web.Activities.Console/Startup.cs +++ b/src/web/modules/Elsa.Web.Activities.Console/Startup.cs @@ -11,7 +11,7 @@ namespace Elsa.Web.Activities.Console public override void ConfigureServices(IServiceCollection services) { services - .AddConsoleDescriptors() + .AddConsoleWorkflowDescriptors() .AddActivityDisplay() .AddActivityDisplay(); } diff --git a/src/web/modules/Elsa.Web.Activities.Http/Startup.cs b/src/web/modules/Elsa.Web.Activities.Http/Startup.cs index 4f478024e..2d64752d3 100644 --- a/src/web/modules/Elsa.Web.Activities.Http/Startup.cs +++ b/src/web/modules/Elsa.Web.Activities.Http/Startup.cs @@ -11,7 +11,7 @@ namespace Elsa.Web.Activities.Http public override void ConfigureServices(IServiceCollection services) { services - .AddHttpDescriptors() + .AddHttpWorkflowDescriptors() .AddActivityDisplay(); } } diff --git a/src/web/modules/Elsa.Web.Activities.Primitives/Startup.cs b/src/web/modules/Elsa.Web.Activities.Primitives/Startup.cs index ba19d82d9..47f30acee 100644 --- a/src/web/modules/Elsa.Web.Activities.Primitives/Startup.cs +++ b/src/web/modules/Elsa.Web.Activities.Primitives/Startup.cs @@ -11,7 +11,7 @@ namespace Elsa.Web.Activities.Primitives public override void ConfigureServices(IServiceCollection services) { services - .AddPrimitiveDescriptors() + .AddPrimitiveWorkflowDescriptors() .AddActivityDisplay() .AddActivityDisplay() .AddActivityDisplay()