Files
coverlet/src/coverlet.core/DependencyInjection.cs
T
Marco Rossignoli 1bb08bb518 Inject InstrumentationHelper (#531)
Inject InstrumentationHelper
2019-09-10 12:56:04 +02:00

40 lines
1.2 KiB
C#

using System;
using Coverlet.Core.Abstracts;
using Coverlet.Core.Helpers;
using Microsoft.Extensions.DependencyInjection;
namespace Coverlet.Core
{
public static class DependencyInjection
{
private static Lazy<IServiceProvider> _serviceProvider = new Lazy<IServiceProvider>(() => InitDefaultServices(), true);
public static IServiceProvider Current
{
get
{
return _serviceProvider.Value;
}
}
public static void Set(IServiceProvider serviceProvider)
{
_serviceProvider = new Lazy<IServiceProvider>(() => serviceProvider);
}
private static IServiceProvider InitDefaultServices()
{
IServiceCollection serviceCollection = new ServiceCollection();
serviceCollection.AddTransient<IRetryHelper, RetryHelper>();
serviceCollection.AddTransient<IProcessExitHandler, ProcessExitHandler>();
// We need to keep singleton/static semantics
serviceCollection.AddSingleton<IInstrumentationHelper, InstrumentationHelper>();
return serviceCollection.BuildServiceProvider();
}
}
}