Files
I150/srcs/RobotNet10/Commons/RobotNet10.CustomConfiguration/Extensions/ServiceCollectionExtensions.cs
2026-07-03 16:37:12 +07:00

64 lines
2.3 KiB
C#

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using RobotNet10.CustomConfiguration.Services;
using RobotNet10.StorageManager;
namespace RobotNet10.CustomConfiguration.Extensions;
/// <summary>
/// Extension methods cho dependency injection
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// Đăng ký các services cho CustomConfiguration
/// StorageConfig sẽ được inject từ project sử dụng thư viện này
/// </summary>
public static IServiceCollection AddCustomConfiguration(
this IServiceCollection services,
StorageConfig storageConfig)
{
ArgumentNullException.ThrowIfNull(storageConfig);
// Register StorageConfig as named options (matching ConfigService constructor)
services.Configure<StorageConfig>("StorageConfigs", options =>
{
options.UsingLocal = storageConfig.UsingLocal;
options.LocalFolder = storageConfig.LocalFolder;
options.Bucket = storageConfig.Bucket;
options.MinioConfig = storageConfig.MinioConfig;
options.RetryCount = storageConfig.RetryCount;
});
// Register ConfigService (creates StorageManager internally)
services.AddSingleton<IConfigService, ConfigService>();
// Register ConfigManager (depends on IConfigService)
services.AddSingleton<IConfigManager, ConfigManager>();
return services;
}
/// <summary>
/// Đăng ký các services cho CustomConfiguration với StorageConfig từ IConfiguration
/// </summary>
public static IServiceCollection AddCustomConfiguration(
this IServiceCollection services,
IConfiguration configuration,
string configSectionName = "StorageConfig")
{
services.Configure<StorageConfig>("StorageConfigs", options =>
{
configuration.GetSection(configSectionName).Bind(options);
});
// Register ConfigService (creates StorageManager internally)
services.AddSingleton<IConfigService, ConfigService>();
// Register ConfigManager (depends on IConfigService)
services.AddSingleton<IConfigManager, ConfigManager>();
return services;
}
}