using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Unity.Microsoft.Logging; using Unity; using Microsoft.Extensions.Logging; namespace ConfectioneryContracts.DI { public class UnityDependencyContainer : IDependencyContainer { private readonly IUnityContainer _container; public UnityDependencyContainer() { _container = new UnityContainer(); } public void AddLogging(Action configure) { var factory = LoggerFactory.Create(configure); _container.AddExtension(new LoggingExtension(factory)); } public void RegisterType(bool isSingle) where U : class, T where T : class { _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); } public void RegisterType(bool isSingle) where T : class { _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); } public T Resolve() { return _container.Resolve(); } } }