using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
public static IConfigurationRoot _configurationRoot;
private static readonly ContainerBuilder _builder = new();
public static void Main()
ILogger logger = serilogLoggerFactory.CreateLogger<BatchContainerHostBuilder>();
ServiceCollection serviceCollection = new();
serviceCollection.RegisterTenantBased(_configurationRoot, logger, (collection, mandant) => {
collection.AddBeirefaServices(_configurationRoot, mandant)
.AddBatchContainerServices(_configurationRoot, _builder, mandant, logger);
public static class TenantBasedDependencyInjectionExtensions
private static string Mandanten = "RLP";
public static IServiceCollection RegisterTenantBased(this IServiceCollection self, IConfigurationRoot configurationRoot, ILogger logger, Action<IServiceCollection, MandantId> tenantBasedRegistration)
if (TryGetMandant(out string mandant, configurationRoot) == false)
string message = $"Mandant nicht ordnungsgemäß gesetzt. Mandanten= '{configurationRoot[Mandanten]}'";
logger.LogError(message);
throw new Exception(message);
tenantBasedRegistration(self, new MandantId(mandant));
private static bool TryGetMandant(out string mandant, IConfiguration configurationRoot)
string mandanten = configurationRoot[BatchConstants.ConfigKeys.Mandanten];
if (string.IsNullOrWhiteSpace(mandanten))
string[] items = mandanten.Split(',');
public static class DependencyInjectionExtensions
public static IServiceCollection AddBeirefaServices(this IServiceCollection self, IConfigurationRoot configurationRoot, MandantId mandant)
public static IServiceCollection AddBatchContainerServices(this IServiceCollection self, IConfigurationRoot configurationRoot, ContainerBuilder containerBuilder, MandantId mandant, ILogger logger)
public MandantId(string mandant)