-
Notifications
You must be signed in to change notification settings - Fork 0
/
Bootstraper.cs
37 lines (32 loc) · 1.17 KB
/
Bootstraper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using Microsoft.Extensions.DependencyInjection;
public static class Bootstrapper
{
public static IServiceProvider ServiceProvider { get; set; }
private static IServiceCollection _serviceCollection;
private static bool _isInitialized = false;
public static void Init()
{
if (!_isInitialized)
{
var serviceCollection = new ServiceCollection();
var serviceProvider = serviceCollection
.BuildServiceProvider();
_serviceCollection = serviceCollection;
ServiceProvider = serviceProvider;
_isInitialized = true;
}
}
public static void RegisterType<TInterface, TImplementation>()
where TInterface : class
where TImplementation : class, TInterface
{
_serviceCollection.AddSingleton<TInterface, TImplementation>();
ServiceProvider = _serviceCollection.BuildServiceProvider();
}
public static void RegisterInstance<TInterface>(TInterface instance)
where TInterface : class
{
_serviceCollection.AddSingleton<TInterface>(instance);
ServiceProvider = _serviceCollection.BuildServiceProvider();
}
}