Skip to content

Commit 2d642df

Browse files
geeknoidMartin Taillefer
andauthored
Nuke DependencyInjection.NamedServices (#4225)
Co-authored-by: Martin Taillefer <[email protected]>
1 parent 60800f8 commit 2d642df

File tree

17 files changed

+28
-6623
lines changed

17 files changed

+28
-6623
lines changed

src/Libraries/System.Cloud.Messaging/DependencyInjection/Extensions/AsyncProcessingPipelineBuilderExtensions.cs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ public static class AsyncProcessingPipelineBuilderExtensions
2929
/// <param name="pipelineBuilder">The builder for async processing pipeline.</param>
3030
/// <returns><see cref="IAsyncProcessingPipelineBuilder"/> to chain additional calls.</returns>
3131
/// <exception cref="ArgumentNullException">Any argument is <see langword="null"/>.</exception>
32-
public static IAsyncProcessingPipelineBuilder AddNamedSingleton<T>(this IAsyncProcessingPipelineBuilder pipelineBuilder)
32+
public static IAsyncProcessingPipelineBuilder AddKeyedSingleton<T>(this IAsyncProcessingPipelineBuilder pipelineBuilder)
3333
where T : class
3434
{
3535
_ = Throw.IfNull(pipelineBuilder);
3636

37-
_ = pipelineBuilder.Services.AddNamedSingleton(pipelineBuilder.PipelineName, sp => sp.GetRequiredService<T>());
37+
_ = pipelineBuilder.Services.AddKeyedSingleton(pipelineBuilder.PipelineName, (sp, _) => sp.GetRequiredService<T>());
3838
return pipelineBuilder;
3939
}
4040

@@ -46,14 +46,14 @@ public static IAsyncProcessingPipelineBuilder AddNamedSingleton<T>(this IAsyncPr
4646
/// <param name="implementationFactory">The implementation factory for the singleton type.</param>
4747
/// <returns><see cref="IAsyncProcessingPipelineBuilder"/> to chain additional calls.</returns>
4848
/// <exception cref="ArgumentNullException">Any argument is <see langword="null"/>.</exception>
49-
public static IAsyncProcessingPipelineBuilder AddNamedSingleton<T>(this IAsyncProcessingPipelineBuilder pipelineBuilder,
49+
public static IAsyncProcessingPipelineBuilder AddKeyedSingleton<T>(this IAsyncProcessingPipelineBuilder pipelineBuilder,
5050
Func<IServiceProvider, T> implementationFactory)
5151
where T : class
5252
{
5353
_ = Throw.IfNull(pipelineBuilder);
5454
_ = Throw.IfNull(implementationFactory);
5555

56-
_ = pipelineBuilder.Services.AddNamedSingleton(pipelineBuilder.PipelineName, implementationFactory);
56+
_ = pipelineBuilder.Services.AddKeyedSingleton(pipelineBuilder.PipelineName, implementationFactory);
5757
return pipelineBuilder;
5858
}
5959

@@ -66,7 +66,7 @@ public static IAsyncProcessingPipelineBuilder AddNamedSingleton<T>(this IAsyncPr
6666
/// <param name="implementationFactory">The implementation factory for the singleton type.</param>
6767
/// <returns><see cref="IAsyncProcessingPipelineBuilder"/> to chain additional calls.</returns>
6868
/// <exception cref="ArgumentNullException">Any argument is <see langword="null"/>.</exception>
69-
public static IAsyncProcessingPipelineBuilder AddNamedSingleton<T>(this IAsyncProcessingPipelineBuilder pipelineBuilder,
69+
public static IAsyncProcessingPipelineBuilder AddKeyedSingleton<T>(this IAsyncProcessingPipelineBuilder pipelineBuilder,
7070
string name,
7171
Func<IServiceProvider, T> implementationFactory)
7272
where T : class
@@ -75,7 +75,7 @@ public static IAsyncProcessingPipelineBuilder AddNamedSingleton<T>(this IAsyncPr
7575
_ = Throw.IfNullOrEmpty(name);
7676
_ = Throw.IfNull(implementationFactory);
7777

78-
_ = pipelineBuilder.Services.AddNamedSingleton(name, implementationFactory);
78+
_ = pipelineBuilder.Services.AddKeyedSingleton(name, (sp, _) => implementationFactory(sp));
7979
return pipelineBuilder;
8080
}
8181

@@ -94,7 +94,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureMessageDestination<TDesti
9494
{
9595
_ = Throw.IfNull(pipelineBuilder);
9696

97-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageDestination>(pipelineBuilder.PipelineName, sp => sp.GetRequiredService<TDestination>());
97+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageDestination>(pipelineBuilder.PipelineName, (sp, _) => sp.GetRequiredService<TDestination>());
9898
return pipelineBuilder;
9999
}
100100

@@ -113,7 +113,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureMessageDestination<TDesti
113113
_ = Throw.IfNull(pipelineBuilder);
114114
_ = Throw.IfNull(implementationFactory);
115115

116-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageDestination>(pipelineBuilder.PipelineName, implementationFactory);
116+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageDestination>(pipelineBuilder.PipelineName, (sp, _) => implementationFactory(sp));
117117
return pipelineBuilder;
118118
}
119119

@@ -135,7 +135,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureMessageDestination<TDesti
135135
_ = Throw.IfNullOrEmpty(name);
136136
_ = Throw.IfNull(implementationFactory);
137137

138-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageDestination>(name, implementationFactory);
138+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageDestination>(name, (sp, _) => implementationFactory(sp));
139139
return pipelineBuilder;
140140
}
141141

@@ -154,7 +154,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureMessageSource<TSource>(th
154154
{
155155
_ = Throw.IfNull(pipelineBuilder);
156156

157-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageSource>(pipelineBuilder.PipelineName, sp => sp.GetRequiredService<TSource>());
157+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageSource>(pipelineBuilder.PipelineName, (sp, _) => sp.GetRequiredService<TSource>());
158158
return pipelineBuilder;
159159
}
160160

@@ -173,7 +173,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureMessageSource<TSource>(th
173173
_ = Throw.IfNull(pipelineBuilder);
174174
_ = Throw.IfNull(implementationFactory);
175175

176-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageSource>(pipelineBuilder.PipelineName, implementationFactory);
176+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageSource>(pipelineBuilder.PipelineName, (sp, _) => implementationFactory(sp));
177177
return pipelineBuilder;
178178
}
179179

@@ -193,7 +193,7 @@ public static IAsyncProcessingPipelineBuilder AddMessageMiddleware<TMiddleware>(
193193
{
194194
_ = Throw.IfNull(pipelineBuilder);
195195

196-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName, sp => sp.GetRequiredService<TMiddleware>());
196+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName, (sp, _) => sp.GetRequiredService<TMiddleware>());
197197
return pipelineBuilder;
198198
}
199199

@@ -215,7 +215,7 @@ public static IAsyncProcessingPipelineBuilder AddMessageMiddleware<TMiddleware>(
215215
_ = Throw.IfNull(pipelineBuilder);
216216
_ = Throw.IfNull(implementationFactory);
217217

218-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName, implementationFactory);
218+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName, (sk, _) => implementationFactory(sk));
219219
return pipelineBuilder;
220220
}
221221

@@ -234,7 +234,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureTerminalMessageDelegate(t
234234
{
235235
_ = Throw.IfNull(pipelineBuilder);
236236

237-
_ = pipelineBuilder.Services.AddNamedSingleton(pipelineBuilder.PipelineName, sp => sp.GetRequiredService<MessageDelegate>());
237+
_ = pipelineBuilder.Services.AddKeyedSingleton(pipelineBuilder.PipelineName, (sp, _) => sp.GetRequiredService<MessageDelegate>());
238238
return pipelineBuilder;
239239
}
240240

@@ -256,7 +256,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureTerminalMessageDelegate(t
256256
_ = Throw.IfNull(pipelineBuilder);
257257
_ = Throw.IfNull(implementationFactory);
258258

259-
_ = pipelineBuilder.Services.AddNamedSingleton(pipelineBuilder.PipelineName, implementationFactory);
259+
_ = pipelineBuilder.Services.AddKeyedSingleton(pipelineBuilder.PipelineName, (sp, _) => implementationFactory(sp));
260260
return pipelineBuilder;
261261
}
262262

@@ -275,7 +275,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureMessageConsumer<TConsumer
275275
{
276276
_ = Throw.IfNull(pipelineBuilder);
277277

278-
_ = pipelineBuilder.Services.AddNamedSingleton<MessageConsumer>(pipelineBuilder.PipelineName, sp => sp.GetRequiredService<TConsumer>());
278+
_ = pipelineBuilder.Services.AddKeyedSingleton<MessageConsumer>(pipelineBuilder.PipelineName, (sp, _) => sp.GetRequiredService<TConsumer>());
279279
return pipelineBuilder;
280280
}
281281

@@ -294,7 +294,7 @@ public static IAsyncProcessingPipelineBuilder ConfigureMessageConsumer<TConsumer
294294
_ = Throw.IfNull(pipelineBuilder);
295295
_ = Throw.IfNull(implementationFactory);
296296

297-
_ = pipelineBuilder.Services.AddNamedSingleton<MessageConsumer>(pipelineBuilder.PipelineName, implementationFactory);
297+
_ = pipelineBuilder.Services.AddKeyedSingleton<MessageConsumer>(pipelineBuilder.PipelineName, (sp, _) => implementationFactory(sp));
298298
return pipelineBuilder;
299299
}
300300

@@ -313,8 +313,7 @@ public static void RunConsumerAsBackgroundService(this IAsyncProcessingPipelineB
313313
_ = Throw.IfNull(pipelineBuilder);
314314
_ = pipelineBuilder.Services.AddSingleton<IHostedService>(serviceProvider =>
315315
{
316-
INamedServiceProvider<MessageConsumer> namedMessageConsumerProvider = serviceProvider.GetRequiredService<INamedServiceProvider<MessageConsumer>>();
317-
MessageConsumer messageConsumer = namedMessageConsumerProvider.GetRequiredService(pipelineBuilder.PipelineName);
316+
MessageConsumer messageConsumer = serviceProvider.GetRequiredKeyedService<MessageConsumer>(pipelineBuilder.PipelineName);
318317
return new ConsumerBackgroundService(messageConsumer);
319318
});
320319
}

src/Libraries/System.Cloud.Messaging/DependencyInjection/Extensions/ServiceProviderExtensions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static IMessageSource GetMessageSource(this IServiceProvider serviceProvi
2929
_ = Throw.IfNull(serviceProvider);
3030
_ = Throw.IfNullOrEmpty(pipelineName);
3131

32-
return serviceProvider.GetRequiredService<INamedServiceProvider<IMessageSource>>().GetRequiredService(pipelineName);
32+
return serviceProvider.GetRequiredKeyedService<IMessageSource>(pipelineName);
3333
}
3434

3535
/// <summary>
@@ -45,7 +45,7 @@ public static IReadOnlyList<IMessageMiddleware> GetMessageMiddlewares(this IServ
4545
_ = Throw.IfNull(serviceProvider);
4646
_ = Throw.IfNullOrEmpty(pipelineName);
4747

48-
return serviceProvider.GetRequiredService<INamedServiceProvider<IMessageMiddleware>>().GetServices(pipelineName).ToList();
48+
return serviceProvider.GetKeyedServices<IMessageMiddleware>(pipelineName).ToArray();
4949
}
5050

5151
/// <summary>
@@ -61,6 +61,6 @@ public static MessageDelegate GetMessageDelegate(this IServiceProvider servicePr
6161
_ = Throw.IfNull(serviceProvider);
6262
_ = Throw.IfNullOrEmpty(pipelineName);
6363

64-
return serviceProvider.GetRequiredService<INamedServiceProvider<MessageDelegate>>().GetRequiredService(pipelineName);
64+
return serviceProvider.GetRequiredKeyedService<MessageDelegate>(pipelineName);
6565
}
6666
}

src/Libraries/System.Cloud.Messaging/Middlewares/Extensions/LatencyRecorderMiddlewareExtensions.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public static IAsyncProcessingPipelineBuilder AddLatencyContextMiddleware<T>(thi
5353
_ = Throw.IfNull(implementationFactory);
5454
_ = Throw.IfNull(exporterFactory);
5555

56-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName,
57-
sp => new LatencyContextProviderMiddleware(implementationFactory(sp), exporterFactory(sp)));
56+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName,
57+
(sp, _) => new LatencyContextProviderMiddleware(implementationFactory(sp), exporterFactory(sp)));
5858
return pipelineBuilder;
5959
}
6060

@@ -73,8 +73,8 @@ public static IAsyncProcessingPipelineBuilder AddLatencyContextMiddleware<T>(thi
7373
_ = Throw.IfNull(pipelineBuilder);
7474
_ = Throw.IfNull(implementationFactory);
7575

76-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName,
77-
sp => new LatencyContextMiddleware(implementationFactory(sp)));
76+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName,
77+
(sp, _) => new LatencyContextMiddleware(implementationFactory(sp)));
7878
return pipelineBuilder;
7979
}
8080

@@ -101,7 +101,7 @@ public static IAsyncProcessingPipelineBuilder AddLatencyRecorderMessageMiddlewar
101101
_ = Throw.IfNull(successMeasureToken);
102102
_ = Throw.IfNull(failureMeasureToken);
103103

104-
_ = pipelineBuilder.Services.AddNamedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName, sp => new LatencyRecorderMiddleware(successMeasureToken, failureMeasureToken));
104+
_ = pipelineBuilder.Services.AddKeyedSingleton<IMessageMiddleware>(pipelineBuilder.PipelineName, (_, _) => new LatencyRecorderMiddleware(successMeasureToken, failureMeasureToken));
105105
return pipelineBuilder;
106106
}
107107
}

src/Libraries/System.Cloud.Messaging/System.Cloud.Messaging.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
</PropertyGroup>
2222

2323
<ItemGroup>
24-
<ProjectReference Include="..\..\ToBeMoved\DependencyInjection.NamedService\DependencyInjection.NamedService.csproj" />
2524
<ProjectReference Include="..\Microsoft.Extensions.Telemetry.Abstractions\Microsoft.Extensions.Telemetry.Abstractions.csproj" />
2625
</ItemGroup>
2726

0 commit comments

Comments
 (0)