using Microsoft.Extensions.Logging; using Unity; using Unity.Microsoft.Logging; namespace FurnitureAssemblyContracts.DI { public class UnityDependencyContainer : IDependencyContainer { private readonly IUnityContainer container; public UnityDependencyContainer() { container = new UnityContainer(); } public void AddLogging(Action<ILoggingBuilder> configure) { // регистрируем логгер в контейнере var factory = LoggerFactory.Create(configure); container.AddExtension(new LoggingExtension(factory)); } public void RegisterType<T>(bool isSingle) where T : class { if (isSingle) { container.RegisterSingleton<T>(); } else { container.RegisterType<T>(); } } public T Resolve<T>() { return container.Resolve<T>(); } void IDependencyContainer.RegisterType<T, U>(bool isSingle) { if (isSingle) { container.RegisterSingleton<T, U>(); } else { container.RegisterType<T, U>(); } } } }