diff --git a/AutoWorkshopContracts/AutoWorkshopContracts.csproj b/AutoWorkshopContracts/AutoWorkshopContracts.csproj index ce24ff2..0f8c9cf 100644 --- a/AutoWorkshopContracts/AutoWorkshopContracts.csproj +++ b/AutoWorkshopContracts/AutoWorkshopContracts.csproj @@ -9,6 +9,8 @@ + + diff --git a/AutoWorkshopContracts/DI/UnityDependencyContainer.cs b/AutoWorkshopContracts/DI/UnityDependencyContainer.cs new file mode 100644 index 0000000..4ac1ff1 --- /dev/null +++ b/AutoWorkshopContracts/DI/UnityDependencyContainer.cs @@ -0,0 +1,38 @@ +using Microsoft.Extensions.Logging; +using Unity; +using Unity.Microsoft.Logging; + +namespace AutoWorkshopContracts.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 IsSingleton) where T : class + { + _container.RegisterType(IsSingleton ? TypeLifetime.Singleton : TypeLifetime.Transient); + + } + + public T Resolve() + { + return _container.Resolve(); + } + + void IDependencyContainer.RegisterType(bool IsSingleton) + { + _container.RegisterType(IsSingleton ? TypeLifetime.Singleton : TypeLifetime.Transient); + } + } +}