using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Unity;
using Unity.Microsoft.Logging;
namespace AircraftPlantContracts.DependencyInjections
{
///
/// Реализация интерфейса установки зависимости между элементами
///
public class UnityDependencyContainer : IDependencyContainer
{
///
/// Контейнер сервисов для регистрации зависимостей
///
private readonly UnityContainer _container;
///
/// Конструктор
///
public UnityDependencyContainer()
{
_container = new UnityContainer();
}
///
/// Регистрация логгера
///
///
public void AddLogging(Action configure)
{
_container.AddExtension(new LoggingExtension(LoggerFactory.Create(configure)));
}
///
/// Добавление зависимости
///
///
///
///
public void RegisterType(bool isSingle) where U : class, T where T : class
{
if (isSingle)
{
_container.RegisterSingleton();
}
else
{
_container.RegisterType();
}
}
///
/// Добавление зависимости
///
///
///
public void RegisterType(bool isSingle) where T : class
{
if (isSingle)
{
_container.RegisterSingleton();
}
else
{
_container.RegisterType();
}
}
///
/// Получение класса со всеми зависимостями
///
///
///
public T Resolve()
{
return _container.Resolve();
}
}
}