Simplify Options, get rid of OptionsBuilder (#431)

* Minor cleanup

* Fix namespaces

* Simplify options
This commit is contained in:
Sviataslau Hankovich 2020-10-27 14:32:53 +03:00 committed by GitHub
parent fad9082d6b
commit 6551b61ead
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 48 additions and 43 deletions

View file

@ -11,15 +11,17 @@ namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddDropbox(this IServiceCollection services, Action<OptionsBuilder<DropboxOptions>>? options = null) =>
public static IServiceCollection AddDropbox(this IServiceCollection services, Action<DropboxOptions>? configureOptions = null) =>
services
.AddDropboxServices(options)
.AddDropboxServices(configureOptions)
.AddDropboxActivities();
public static IServiceCollection AddDropboxServices(this IServiceCollection services, Action<OptionsBuilder<DropboxOptions>>? options = null)
public static IServiceCollection AddDropboxServices(this IServiceCollection services, Action<DropboxOptions>? configureOptions = null)
{
var optionsBuilder = services.AddOptions<DropboxOptions>();
options?.Invoke(optionsBuilder);
if (configureOptions != null)
{
services.Configure(configureOptions);
}
services
.AddHttpClient<IFilesApi, FilesApi>()

View file

@ -2,22 +2,23 @@ using System;
using Elsa.Activities.Email;
using Elsa.Activities.Email.Options;
using Elsa.Activities.Email.Services;
using Microsoft.Extensions.Options;
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddEmailActivities(this IServiceCollection services, Action<OptionsBuilder<SmtpOptions>> options = null) =>
public static IServiceCollection AddEmailActivities(this IServiceCollection services, Action<SmtpOptions> configureOptions = null) =>
services
.AddEmailServices(options)
.AddEmailServices(configureOptions)
.AddEmailActivitiesInternal();
public static IServiceCollection AddEmailServices(this IServiceCollection services, Action<OptionsBuilder<SmtpOptions>> options = null)
public static IServiceCollection AddEmailServices(this IServiceCollection services, Action<SmtpOptions> configureOptions = null)
{
var optionsBuilder = services.AddOptions<SmtpOptions>();
options?.Invoke(optionsBuilder);
if (configureOptions != null)
{
services.Configure(configureOptions);
}
return services
.AddSingleton<ISmtpService, SmtpService>();

View file

@ -12,21 +12,23 @@ using Elsa.Triggers;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddHttpActivities(this IServiceCollection services, Action<OptionsBuilder<HttpActivityOptions>> options = null) =>
public static IServiceCollection AddHttpActivities(this IServiceCollection services, Action<HttpActivityOptions>? configureOptions = null) =>
services
.AddHttpServices(options)
.AddHttpServices(configureOptions)
.AddHttpActivitiesInternal();
public static IServiceCollection AddHttpServices(this IServiceCollection services, Action<OptionsBuilder<HttpActivityOptions>> options = null)
public static IServiceCollection AddHttpServices(this IServiceCollection services, Action<HttpActivityOptions>? configureOptions = null)
{
options?.Invoke(services.AddOptions<HttpActivityOptions>());
if (configureOptions != null)
{
services.Configure(configureOptions);
}
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddHttpClient(nameof(SendHttpRequest));

View file

@ -5,7 +5,6 @@ using Elsa.Activities.MassTransit.Options;
using MassTransit;
using MassTransit.ConsumeConfigurators;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Elsa.Activities.MassTransit.Extensions
{
@ -44,10 +43,12 @@ namespace Elsa.Activities.MassTransit.Extensions
return services;
}
public static IServiceCollection AddRabbitMqActivities(this IServiceCollection services, Action<OptionsBuilder<RabbitMqOptions>> options = null, params Type[] messageTypes)
public static IServiceCollection AddRabbitMqActivities(this IServiceCollection services, Action<RabbitMqOptions>? configureOptions = null, params Type[] messageTypes)
{
var optionsBuilder = services.AddOptions<RabbitMqOptions>();
options?.Invoke(optionsBuilder);
if (configureOptions != null)
{
services.Configure(configureOptions);
}
services
.AddMassTransitActivities();
@ -71,7 +72,7 @@ namespace Elsa.Activities.MassTransit.Extensions
public static void ConfigureWorkflowConsumer<TMessage>(
this IReceiveEndpointConfigurator configurator,
IServiceProvider provider,
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>> configure = null)
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>>? configure = null)
where TMessage : class
{
provider.GetRequiredService<IRegistration>().ConfigureConsumer(configurator, configure);
@ -81,7 +82,7 @@ namespace Elsa.Activities.MassTransit.Extensions
public static IConsumerRegistrationConfigurator<WorkflowConsumer<TMessage>> AddWorkflowConsumer<TMessage>(
this IRegistrationConfigurator configurator,
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>> configure = null)
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>>? configure = null)
where TMessage : class
{
return configurator.AddConsumer(configure);

View file

@ -2,18 +2,19 @@ using System;
using Elsa.Activities.Timers;
using Elsa.Activities.Timers.HostedServices;
using Elsa.Activities.Timers.Options;
using Microsoft.Extensions.Options;
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddTimerActivities(this IServiceCollection services, Action<OptionsBuilder<TimersOptions>> options = null)
public static IServiceCollection AddTimerActivities(this IServiceCollection services, Action<TimersOptions>? configureOptions = null)
{
var optionsBuilder = services.AddOptions<TimersOptions>();
options?.Invoke(optionsBuilder);
if (configureOptions != null)
{
services.Configure(configureOptions);
}
return services
.AddHostedService<TimersHostedService>()
.AddActivity<CronEvent>()

View file

@ -25,7 +25,7 @@ namespace Elsa.Samples.DistributedLock
.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared"))
.UseRedisLockProvider("localhost:6379,abortConnect=false"))
.AddConsoleActivities()
.AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5)))
.AddTimerActivities(timer => timer.SweepInterval = Duration.FromSeconds(5))
.AddWorkflow<RecurringWorkflow>();
});
}

View file

@ -1,9 +1,9 @@
using Elsa.Activities.Console;
using Elsa.Activities.MassTransit;
using Elsa.Builders;
using Elsa.Models;
using NodaTime;
using System;
using Elsa.Activities.Timers;
namespace Elsa.Samples.DistributedLock
{

View file

@ -1,6 +1,6 @@
using System;
using Elsa.Activities.Console;
using Elsa.Activities.MassTransit;
using Elsa.Activities.Timers;
using Elsa.Builders;
namespace Elsa.Samples.Timers

View file

@ -1,4 +1,4 @@
using System.Threading.Tasks;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using NodaTime;
@ -18,7 +18,7 @@ namespace Elsa.Samples.Timers
services
.AddElsa(options => options.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared")))
.AddConsoleActivities()
.AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5)))
.AddTimerActivities(timer => timer.SweepInterval = Duration.FromSeconds(5))
.AddWorkflow<RecurringTaskWorkflow>()
.AddWorkflow<CronTaskWorkflow>();
});

View file

@ -1,6 +1,6 @@
using System;
using Elsa.Activities.Console;
using Elsa.Activities.MassTransit;
using Elsa.Activities.Timers;
using Elsa.Builders;
using Elsa.Models;
using NodaTime;

View file

@ -1,7 +1,6 @@
using Elsa.Extensions;
using Elsa.Scripting.JavaScript.Options;
using Elsa.Scripting.JavaScript.Services;
using Microsoft.Extensions.Options;
using System;
using Elsa.Expressions;
@ -17,10 +16,9 @@ namespace Microsoft.Extensions.DependencyInjection
.AddNotificationHandlers(typeof(JavaScriptServiceCollectionExtensions));
}
public static IServiceCollection WithJavaScriptOptions(this IServiceCollection services, Action<OptionsBuilder<ScriptOptions>> options)
public static IServiceCollection WithJavaScriptOptions(this IServiceCollection services, Action<ScriptOptions> configureOptions)
{
var scriptOptions = services.AddOptions<ScriptOptions>();
options(scriptOptions);
services.Configure(configureOptions);
return services;
}

View file

@ -1,4 +1,4 @@
using System;
using System;
using Elsa.Serialization;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
@ -7,11 +7,11 @@ namespace Elsa.Server.Api.Extensions
{
public static class JsonMvcBuilderExtensions
{
public static IMvcBuilder AddJsonSerialization(this IMvcBuilder builder, Action<JsonSerializerSettings>? configure = default) =>
public static IMvcBuilder AddJsonSerialization(this IMvcBuilder builder, Action<JsonSerializerSettings>? configureOptions = default) =>
builder.AddNewtonsoftJson(
options =>
{
configure ??= DefaultContentSerializer.ConfigureDefaultJsonSerializationSettings;
configureOptions ??= DefaultContentSerializer.ConfigureDefaultJsonSerializationSettings;
//configure(options.SerializerSettings);
});
}

View file

@ -40,9 +40,9 @@ namespace Elsa.Server.Host
.AllowAnyHeader()))
.AddConsoleActivities()
.AddHttpActivities(options => options.Bind(elsaSection.GetSection("Http")))
.AddEmailActivities(options => options.Bind(elsaSection.GetSection("Smtp")))
.AddTimerActivities(options => options.Bind(elsaSection.GetSection("BackgroundRunner")))
.AddHttpActivities(elsaSection.GetSection("Http").Bind)
.AddEmailActivities(elsaSection.GetSection("Smtp").Bind)
.AddTimerActivities(elsaSection.GetSection("BackgroundRunner").Bind)
.AddStartupTask<ResumeRunningWorkflowsTask>();
}