From 6a8dbaf3486c5f74f4a4373aa0e5aa19a5dba9de Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 1 Aug 2018 13:34:20 +0300 Subject: [PATCH] Add Items to the ServiceConfigurationContext. --- .../Volo/Abp/Modularity/ModuleLoader.cs | 4 +++- .../Modularity/ServiceConfigurationContext.cs | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ModuleLoader.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ModuleLoader.cs index 517c2fb862..d05103d920 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ModuleLoader.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ModuleLoader.cs @@ -92,6 +92,8 @@ namespace Volo.Abp.Modularity protected virtual void ConfigureServices(List modules, IServiceCollection services) { var context = new ServiceConfigurationContext(services); + services.AddSingleton(context); + //PreConfigureServices foreach (var module in modules.Where(m => m.Instance is IPreConfigureServices)) { @@ -104,7 +106,7 @@ namespace Volo.Abp.Modularity module.Instance.ConfigureServices(context); } - //IPostConfigureServices + //PostConfigureServices foreach (var module in modules.Where(m => m.Instance is IPostConfigureServices)) { ((IPostConfigureServices)module.Instance).PostConfigureServices(context); diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs index bf2f77fa4f..2bac46ff21 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs @@ -1,4 +1,5 @@ -using JetBrains.Annotations; +using System.Collections.Generic; +using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; namespace Volo.Abp.Modularity @@ -7,9 +8,27 @@ namespace Volo.Abp.Modularity { public IServiceCollection Services { get; } + public IDictionary Items { get; } + + /// + /// Gets/sets arbitrary named objects those can be stored during + /// the service registration phase and shared between modules. + /// + /// This is a shortcut usage of the dictionary. + /// Returns null if given key is not found in the dictionary. + /// + /// + /// + public object this[string key] + { + get => Items.GetOrDefault(key); + set => Items[key] = value; + } + public ServiceConfigurationContext([NotNull] IServiceCollection services) { Services = Check.NotNull(services, nameof(services)); + Items = new Dictionary(); } } } \ No newline at end of file