2023-05-05 10:36:33 +04:00

48 lines
1.4 KiB
C#

using Microsoft.Extensions.Logging;
namespace SushiBarContracts.DI;
public class DependencyManager
{
private readonly IDependencyContainer _dependencyManager;
private static DependencyManager? _manager;
private static readonly object _locjObject = new();
private DependencyManager()
{
_dependencyManager = new UnityDependencyContainer();
}
public static DependencyManager Instance { get {
if (_manager != null)
return
_manager;
lock (_locjObject) { _manager = new DependencyManager(); }
return
_manager; } }
public static void InitDependency()
{
var exts = ServiceProviderLoader.GetImplementationExtensions();
foreach (var ext in exts)
{
if (ext == null)
{
throw new ArgumentNullException("Missing components to load module dependencies");
}
ext.RegisterServices();
}
}
public void AddLogging(Action<ILoggingBuilder> configure) =>
_dependencyManager.AddLogging(configure);
public void RegisterType<T, TU>(bool isSingle = false) where TU : class, T where T : class =>
_dependencyManager.RegisterType<T, TU>(isSingle);
public void RegisterType<T>(bool isSingle = false) where T : class =>
_dependencyManager.RegisterType<T>(isSingle);
public T Resolve<T>() =>
_dependencyManager.Resolve<T>();
}