Advertisement
AgentFire

MicroAppExample

Nov 1st, 2024
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.89 KB | Source Code | 0 0
  1. using Microsoft.Extensions.DependencyInjection;
  2.  
  3. namespace MicroAppExample;
  4.  
  5. public static class App
  6. {
  7.     private static object _syncLock = new();
  8.     private static IServiceProvider? _serviceProvider = null;
  9.  
  10.     private static IServiceProvider BuildContainer()
  11.     {
  12.         ServiceCollection services = new();
  13.  
  14.         // Наполняешь DI.
  15.         //services.AddSingleton<IService, Service>();
  16.         //services.AddScoped<IService, Service>();
  17.  
  18.         return services.BuildServiceProvider();
  19.     }
  20.  
  21.     public static TResult Run<TResult>(Func<IServiceProvider, TResult> appCode)
  22.     {
  23.         lock (_syncLock)
  24.         {
  25.             if (_serviceProvider is null)
  26.             {
  27.                 _serviceProvider = BuildContainer();
  28.             }
  29.         }
  30.  
  31.         using var scope = _serviceProvider.CreateScope();
  32.  
  33.         return appCode(scope.ServiceProvider);
  34.     }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement