using ToolsModule.Interfaces; using System; namespace ToolsModule.BusinessLogics { /// /// Менеджер для работы с зависимостями /// public class DependencyManager { private readonly IDependencyManager _dependencyManager; private static DependencyManager _manager; private static readonly object _locjObject = new object(); private DependencyManager() { _dependencyManager = new UnityContainerManager(); } public static DependencyManager Instance { get { if (_manager == null) { lock (_locjObject) { _manager = new DependencyManager(); } } return _manager; } } /// /// Иницализация библиотек, в которых идут установки зависомстей /// public static void InitDependency() { var ext = ServiceProviderLoader.GetImplementationExtensions(); if (ext.Count == 0) { throw new ArgumentNullException("Отсутствуют компоненты для загрузки зависимостей по модулям"); } // регистрируем зависимости foreach (var e in ext) { e.RegisterServices(); } } /// /// Добавление зависимости /// /// /// public void RegisterType() where U : T => _dependencyManager.RegisterType(); /// /// Добавление зависимости /// /// public void RegisterType() => _dependencyManager.RegisterType(); /// /// Получение класса со всеми зависмостями /// /// /// public T Resolve() => _dependencyManager.Resolve(); /// /// Получение класса со всеми зависмостями /// /// /// public object Resolve(Type t) => _dependencyManager.Resolve(t); } }