Skip to content

Commit 0ece9be

Browse files
Merge pull request #53 from Particular/backport-adapter-fix
Use matching lifetime for interface registrations (#51)
2 parents 691b9dc + af65dd7 commit 0ece9be

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/NServiceBus.Extensions.Hosting/ServiceCollectionAdapter.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ public void ConfigureComponent(Type concreteComponent, DependencyLifecycle depen
2020
return;
2121
}
2222

23-
serviceCollection.Add(new ServiceDescriptor(concreteComponent, concreteComponent, Map(dependencyLifecycle)));
24-
RegisterInterfaces(concreteComponent);
23+
var serviceLifetime = Map(dependencyLifecycle);
24+
serviceCollection.Add(new ServiceDescriptor(concreteComponent, concreteComponent, serviceLifetime));
25+
RegisterInterfaces(concreteComponent,serviceLifetime);
2526
}
2627

2728
public void ConfigureComponent<T>(DependencyLifecycle dependencyLifecycle)
@@ -37,8 +38,9 @@ public void ConfigureComponent<T>(Func<T> componentFactory, DependencyLifecycle
3738
return;
3839
}
3940

40-
serviceCollection.Add(new ServiceDescriptor(componentType, p => componentFactory(), Map(dependencyLifecycle)));
41-
RegisterInterfaces(componentType);
41+
var serviceLifetime = Map(dependencyLifecycle);
42+
serviceCollection.Add(new ServiceDescriptor(componentType, p => componentFactory(), serviceLifetime));
43+
RegisterInterfaces(componentType, serviceLifetime);
4244
}
4345

4446
public void ConfigureComponent<T>(Func<IBuilder, T> componentFactory, DependencyLifecycle dependencyLifecycle)
@@ -49,8 +51,9 @@ public void ConfigureComponent<T>(Func<IBuilder, T> componentFactory, Dependency
4951
return;
5052
}
5153

52-
serviceCollection.Add(new ServiceDescriptor(componentType, p => componentFactory(new ServiceProviderAdapter(p)), Map(dependencyLifecycle)));
53-
RegisterInterfaces(componentType);
54+
var serviceLifetime = Map(dependencyLifecycle);
55+
serviceCollection.Add(new ServiceDescriptor(componentType, p => componentFactory(new ServiceProviderAdapter(p)), serviceLifetime));
56+
RegisterInterfaces(componentType, serviceLifetime);
5457
}
5558

5659
public bool HasComponent<T>()
@@ -73,13 +76,13 @@ public void RegisterSingleton<T>(T instance)
7376
RegisterSingleton(typeof(T), instance);
7477
}
7578

76-
void RegisterInterfaces(Type component)
79+
void RegisterInterfaces(Type component, ServiceLifetime serviceLifetime)
7780
{
7881
var interfaces = component.GetInterfaces();
7982
foreach (var serviceType in interfaces)
8083
{
8184
// see https://andrewlock.net/how-to-register-a-service-with-multiple-interfaces-for-in-asp-net-core-di/
82-
serviceCollection.Add(new ServiceDescriptor(serviceType, sp => sp.GetService(component), ServiceLifetime.Transient));
85+
serviceCollection.Add(new ServiceDescriptor(serviceType, sp => sp.GetService(component), serviceLifetime));
8386
}
8487
}
8588

0 commit comments

Comments
 (0)