using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using xCommons.Extensions; using xMessageService.DI; using xServices.Configurations; using xServices.Constants; using xStorageService.DI; namespace xServices.DI { public static partial class XDIHelperExtension { /// /// Retrive Services Configurations ... /// /// /// public static XServicesConfiguration GetXServicesConfiguration( this IConfiguration source ) { // var xConfig = source .GetSection(ConfigurationNodeNames.SERVICES_NODE); var result = xConfig.Get(); // return result; } /// /// Register Service Configuration ... /// /// /// public static void AddXServicesConfiguration( this IServiceCollection services, IConfiguration configuration ) { // var config = configuration .GetXServicesConfiguration(); if (config.IsNull()) { config = new XServicesConfiguration(); } // services.AddSingleton(config); } /// /// Register Service Configuration ... /// /// /// public static void AddXServicesConfiguration( this IServiceCollection services, XServicesConfiguration configuration ) { // if (configuration.IsNull()) { configuration = new XServicesConfiguration(); } // services.AddSingleton(configuration); } /// /// Register Services ... /// /// /// public static void AddXServices( this IServiceCollection services, IConfiguration configuration, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // var config = configuration.GetXServicesConfiguration(); // AddServices( config: config, services: services, lifeTime: lifeTime, configuration: configuration ); } /// /// Register Services ... /// /// /// /// public static void AddXServices( this IServiceCollection services, IConfiguration configuration, XServicesConfiguration config, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // AddServices( config: config, services: services, lifeTime: lifeTime, configuration: configuration ); } /// /// Use All Required Middlewares ... /// /// public static void UseXServices(this IApplicationBuilder app) { // // Use Storage Service ... app.UseXStorageService(); } // #region Private ... /// /// Register Required Services ... /// /// /// /// private static void AddServices( this IServiceCollection services, IConfiguration configuration, XServicesConfiguration config = null, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // // Check config ... if (config.IsNull()) { config = new XServicesConfiguration(); } // // Storage Service ... services.AddXStorageService(configuration); // // Message Service ... services.AddXMessageService(config: configuration); } #endregion } }