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();
}
}