@@ -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 }
0 commit comments