-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDependencyInjectionService.cs
More file actions
40 lines (31 loc) · 1.14 KB
/
Copy pathDependencyInjectionService.cs
File metadata and controls
40 lines (31 loc) · 1.14 KB
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
38
39
40
using Microsoft.Extensions.DependencyInjection;
using TreeBasedCli;
namespace Samples.CryptoKit
{
public sealed class DependencyInjectionService : IDependencyInjectionService
{
private IServiceProvider serviceProvider;
private static readonly Lazy<DependencyInjectionService> lazy
= new Lazy<DependencyInjectionService>(() => new DependencyInjectionService());
private DependencyInjectionService()
{
ServiceCollection services = BuildServiceCollection();
this.serviceProvider = services.BuildServiceProvider();
}
public static DependencyInjectionService Instance => lazy.Value;
private static ServiceCollection BuildServiceCollection()
{
var services = new ServiceCollection();
// nothing here
return services;
}
public T GetUnregisteredService<T>() where T : notnull
{
return ActivatorUtilities.CreateInstance<T>(this.serviceProvider);
}
public T Resolve<T>() where T : notnull
{
return this.GetUnregisteredService<T>();
}
}
}