using System; using Unity; using Unity.Lifetime; namespace ModelTools.BusinessLogics { /// /// Работа с UnityContainer /// public class UnityContainerConfigurator { private static IUnityContainer _unityContainer; public static IUnityContainer Container { get { if (_unityContainer == null) _unityContainer = new UnityContainer(); return _unityContainer; } } /// /// Инициализация сервисов /// public static void InitServices() { var ext = ServiceProviderLoader.GetImplementationExtensions(); if (ext.Count == 0) { throw new ArgumentNullException("Отсутствуют компоненты для загрузки зависимостей по модулям"); } // регистрируем в UnityContainaer зависимости foreach (var e in ext) { e.RegisterServices(); } } /// /// Добавление зависимости /// /// /// public static void PublishService() where U : T => Container.RegisterType(new HierarchicalLifetimeManager()); /// /// Получение класса со всеми зависмостями /// /// /// public static T Resolve() => Container.Resolve(); } }