From b53a4d89c0c089cb399a676ce60426c4a11af021 Mon Sep 17 00:00:00 2001 From: Carl-Hugo Marcotte Date: Fri, 31 Dec 2021 00:39:42 -0500 Subject: [PATCH] Add support for different ServiceLifetime --- .../ServiceCollectionExtensions.cs | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Blazored.SessionStorage/ServiceCollectionExtensions.cs b/src/Blazored.SessionStorage/ServiceCollectionExtensions.cs index 9b1e2bf..8898f10 100644 --- a/src/Blazored.SessionStorage/ServiceCollectionExtensions.cs +++ b/src/Blazored.SessionStorage/ServiceCollectionExtensions.cs @@ -1,9 +1,10 @@ -using System; +using System; using System.Diagnostics.CodeAnalysis; using Blazored.SessionStorage.JsonConverters; using Blazored.SessionStorage.Serialization; using Blazored.SessionStorage.StorageOptions; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; namespace Blazored.SessionStorage { @@ -13,18 +14,18 @@ public static class ServiceCollectionExtensions public static IServiceCollection AddBlazoredSessionStorage(this IServiceCollection services) => AddBlazoredSessionStorage(services, null); - public static IServiceCollection AddBlazoredSessionStorage(this IServiceCollection services, Action configure) + public static IServiceCollection AddBlazoredSessionStorage(this IServiceCollection services, Action configure, ServiceLifetime servicesLifetime = ServiceLifetime.Scoped) { - return services - .AddScoped() - .AddScoped() - .AddScoped() - .AddScoped() - .Configure(configureOptions => - { - configure?.Invoke(configureOptions); - configureOptions.JsonSerializerOptions.Converters.Add(new TimespanJsonConverter()); - }); + services.TryAdd(new ServiceDescriptor(typeof(IJsonSerializer), typeof(SystemTextJsonSerializer), servicesLifetime)); + services.TryAdd(new ServiceDescriptor(typeof(IStorageProvider), typeof(BrowserStorageProvider), servicesLifetime)); + services.TryAdd(new ServiceDescriptor(typeof(ISessionStorageService), typeof(SessionStorageService), servicesLifetime)); + services.TryAdd(new ServiceDescriptor(typeof(ISyncSessionStorageService), typeof(SessionStorageService), servicesLifetime)); + services.Configure(configureOptions => + { + configure?.Invoke(configureOptions); + configureOptions.JsonSerializerOptions.Converters.Add(new TimespanJsonConverter()); + }); + return services; } } }