From c207c9142da315c7f3853f43cdf8bcf50bd3d7a7 Mon Sep 17 00:00:00 2001 From: Oleg Shabunov Date: Fri, 21 Jun 2024 01:47:51 +0400 Subject: [PATCH] add UnityDependencyContainer implementation of IDependencyContainer --- .../AutoWorkshopContracts.csproj | 2 + .../DI/UnityDependencyContainer.cs | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 AutoWorkshopContracts/DI/UnityDependencyContainer.cs 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); + } + } +}