Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.Extensions.DependencyInjection;
- namespace MicroAppExample;
- public static class App
- {
- private static object _syncLock = new();
- private static IServiceProvider? _serviceProvider = null;
- private static IServiceProvider BuildContainer()
- {
- ServiceCollection services = new();
- // Наполняешь DI.
- //services.AddSingleton<IService, Service>();
- //services.AddScoped<IService, Service>();
- return services.BuildServiceProvider();
- }
- public static TResult Run<TResult>(Func<IServiceProvider, TResult> appCode)
- {
- lock (_syncLock)
- {
- if (_serviceProvider is null)
- {
- _serviceProvider = BuildContainer();
- }
- }
- using var scope = _serviceProvider.CreateScope();
- return appCode(scope.ServiceProvider);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement