Files
xSaherElmServices/DI/XDIHelperExtension.cs
T
2026-05-07 13:31:33 +03:30

162 lines
4.6 KiB
C#

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 class XDIHelperExtension
{
/// <summary>
/// Retrive Services Configurations ...
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static XServicesConfiguration GetXServicesConfiguration(
this IConfiguration source
)
{
//
var xConfig = source
.GetSection(ConfigurationNodeNames.SERVICES_NODE);
var result = xConfig.Get<XServicesConfiguration>();
//
return result;
}
/// <summary>
/// Register Service Configuration ...
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
public static void AddXServicesConfiguration(
this IServiceCollection services,
IConfiguration configuration
)
{
//
var config = configuration
.GetXServicesConfiguration();
if (config.IsNull())
{
config = new XServicesConfiguration();
}
//
services.AddSingleton<XServicesConfiguration>(config);
}
/// <summary>
/// Register Service Configuration ...
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
public static void AddXServicesConfiguration(
this IServiceCollection services,
XServicesConfiguration configuration
)
{
//
if (configuration.IsNull())
{
configuration = new XServicesConfiguration();
}
//
services.AddSingleton<XServicesConfiguration>(configuration);
}
/// <summary>
/// Register Services ...
/// </summary>
/// <param name="services"></param>
/// <param name="lifeTime"></param>
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
);
}
/// <summary>
/// Register Services ...
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <param name="lifeTime"></param>
public static void AddXServices(
this IServiceCollection services,
IConfiguration configuration,
XServicesConfiguration config,
ServiceLifetime lifeTime = ServiceLifetime.Transient
)
{
//
AddServices(
config: config,
services: services,
lifeTime: lifeTime,
configuration: configuration
);
}
/// <summary>
/// Use All Required Middlewares ...
/// </summary>
/// <param name="app"></param>
public static void UseXServices(this IApplicationBuilder app)
{
//
// Use Storage Service ...
app.UseXStorageService();
}
//
#region Private ...
/// <summary>
/// Register Required Services ...
/// </summary>
/// <param name="services"></param>
/// <param name="config"></param>
/// <param name="lifeTime"></param>
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
}
}