Skip to content

Commit 1f6321b

Browse files
committed
Updatin dependencies
1 parent 2776eee commit 1f6321b

File tree

4 files changed

+41
-12
lines changed

4 files changed

+41
-12
lines changed

src/HostingExtension.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,23 @@ namespace Unity.Microsoft.DependencyInjection
66
{
77
public static class HostingExtension
88
{
9+
private static ServiceProviderFactory _factory;
10+
911
public static IWebHostBuilder UseUnityServiceProvider(this IWebHostBuilder hostBuilder, IUnityContainer container = null)
1012
{
13+
_factory = new ServiceProviderFactory(container);
14+
1115
#if NETCOREAPP1_1
1216
return hostBuilder.ConfigureServices((services) =>
1317
{
14-
services.Replace(ServiceDescriptor.Singleton<IServiceProviderFactory<IUnityContainer>>(new ServiceProviderFactory(container)));
18+
services.Replace(ServiceDescriptor.Singleton<IServiceProviderFactory<IUnityContainer>>(_factory));
19+
services.Replace(ServiceDescriptor.Singleton<IServiceProviderFactory<IServiceCollection>>(_factory));
1520
});
1621
#else
1722
return hostBuilder.ConfigureServices((context, services) =>
1823
{
19-
services.Replace(ServiceDescriptor.Singleton<IServiceProviderFactory<IUnityContainer>>(new ServiceProviderFactory(container)));
24+
services.Replace(ServiceDescriptor.Singleton<IServiceProviderFactory<IUnityContainer>>(_factory));
25+
services.Replace(ServiceDescriptor.Singleton<IServiceProviderFactory<IServiceCollection>>(_factory));
2026
});
2127
#endif
2228
}

src/ServiceProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void Dispose()
7777
GC.SuppressFinalize(this);
7878
}
7979

80-
private void Dispose(bool mode)
80+
private void Dispose(bool _)
8181
{
8282
IDisposable disposable = _container;
8383
_container = null;

src/ServiceProviderFactory.cs

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,50 @@
11
using System;
22
using Microsoft.Extensions.DependencyInjection;
3+
using Unity.Lifetime;
34

45
namespace Unity.Microsoft.DependencyInjection
56
{
6-
public class ServiceProviderFactory : IServiceProviderFactory<IUnityContainer>
7+
public class ServiceProviderFactory : IServiceProviderFactory<IUnityContainer>,
8+
IServiceProviderFactory<IServiceCollection>
79
{
810
private readonly IUnityContainer _container;
911

1012
public ServiceProviderFactory(IUnityContainer container)
1113
{
1214
_container = container ?? new UnityContainer();
13-
}
1415

15-
public IUnityContainer CreateBuilder(IServiceCollection services)
16-
{
17-
return _container.CreateChildContainer()
18-
.AddExtension(new MdiExtension())
19-
.AddServices(services);
16+
_container.RegisterInstance<IServiceProviderFactory<IUnityContainer>>(this, new ContainerControlledLifetimeManager());
17+
_container.RegisterInstance<IServiceProviderFactory<IServiceCollection>>(this, new ExternallyControlledLifetimeManager());
2018
}
2119

2220
public IServiceProvider CreateServiceProvider(IUnityContainer container)
2321
{
2422
return new ServiceProvider(container);
2523
}
24+
25+
public IServiceProvider CreateServiceProvider(IServiceCollection containerBuilder)
26+
{
27+
return new ServiceProvider(CreateServiceProviderContainer(containerBuilder));
28+
}
29+
30+
IUnityContainer IServiceProviderFactory<IUnityContainer>.CreateBuilder(IServiceCollection services)
31+
{
32+
return CreateServiceProviderContainer(services);
33+
}
34+
35+
IServiceCollection IServiceProviderFactory<IServiceCollection>.CreateBuilder(IServiceCollection services)
36+
{
37+
return services;
38+
}
39+
40+
41+
private IUnityContainer CreateServiceProviderContainer(IServiceCollection services)
42+
{
43+
var container = _container.CreateChildContainer();
44+
new ServiceProviderFactory(container);
45+
46+
return container.AddExtension(new MdiExtension())
47+
.AddServices(services);
48+
}
2649
}
2750
}

src/Unity.Microsoft.DependencyInjection.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@
5656

5757

5858
<ItemGroup Condition="!Exists('$(UnityAbstractions)')">
59-
<PackageReference Include="Unity.Abstractions" Version="$(UnityAbstractionsVersion)" />
59+
<PackageReference Include="Unity.Abstractions" Version="3.3.1" />
6060
</ItemGroup>
6161

6262
<ItemGroup Condition="!Exists('$(UnityContainer)')">
63-
<PackageReference Include="Unity.Container" Version="$(UnityContainerVersion)" />
63+
<PackageReference Include="Unity.Container" Version="5.8.9" />
6464
</ItemGroup>
6565

6666
</Project>

0 commit comments

Comments
 (0)