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