@@ -199,31 +199,7 @@ public INotificationStage<TJob> AddNotificationHandler<TJobNotificationHandler>(
199
199
/// <inheritdoc />
200
200
public INotificationStage < TJob > ExecuteWhen ( Action < DependencyBuilder < TJob > > ? success = null , Action < DependencyBuilder < TJob > > ? faulted = null )
201
201
{
202
- if ( success is not null )
203
- {
204
- var dependencyBuilder = new DependencyBuilder < TJob > ( services ) ;
205
- success ( dependencyBuilder ) ;
206
- var runWhenSuccess = dependencyBuilder . GetDependentJobOption ( ) ;
207
- runWhenSuccess . ForEach ( s =>
208
- {
209
- services . TryAddSingleton ( s ) ;
210
- services . TryAddSingleton ( s . Type ) ;
211
- } ) ;
212
- jobs . ForEach ( j => j . RunWhenSuccess = runWhenSuccess ) ;
213
- }
214
-
215
- if ( faulted is not null )
216
- {
217
- var dependencyBuilder = new DependencyBuilder < TJob > ( services ) ;
218
- faulted ( dependencyBuilder ) ;
219
- var runWhenFaulted = dependencyBuilder . GetDependentJobOption ( ) ;
220
- runWhenFaulted . ForEach ( s =>
221
- {
222
- services . TryAddSingleton ( s ) ;
223
- services . TryAddSingleton ( s . Type ) ;
224
- } ) ;
225
- jobs . ForEach ( j => j . RunWhenFaulted = runWhenFaulted ) ;
226
- }
202
+ ExecuteWhenHelper . AddRegistration ( services , jobs , success , faulted ) ;
227
203
228
204
return this ;
229
205
}
@@ -276,31 +252,7 @@ public INotificationStage<TJob> AddNotificationHandler<TJobNotificationHandler>(
276
252
public INotificationStage < TJob > ExecuteWhen ( Action < DependencyBuilder < TJob > > ? success = null ,
277
253
Action < DependencyBuilder < TJob > > ? faulted = null )
278
254
{
279
- if ( success is not null )
280
- {
281
- var dependencyBuilder = new DependencyBuilder < TJob > ( services ) ;
282
- success ( dependencyBuilder ) ;
283
- var runWhenSuccess = dependencyBuilder . GetDependentJobOption ( ) ;
284
- runWhenSuccess . ForEach ( s =>
285
- {
286
- services . TryAddSingleton ( s ) ;
287
- services . TryAddSingleton ( s . Type ) ;
288
- } ) ;
289
- jobs . ForEach ( j => j . RunWhenSuccess = runWhenSuccess ) ;
290
- }
291
-
292
- if ( faulted is not null )
293
- {
294
- var dependencyBuilder = new DependencyBuilder < TJob > ( services ) ;
295
- faulted ( dependencyBuilder ) ;
296
- var runWhenFaulted = dependencyBuilder . GetDependentJobOption ( ) ;
297
- runWhenFaulted . ForEach ( s =>
298
- {
299
- services . TryAddSingleton ( s ) ;
300
- services . TryAddSingleton ( s . Type ) ;
301
- } ) ;
302
- jobs . ForEach ( j => j . RunWhenFaulted = runWhenFaulted ) ;
303
- }
255
+ ExecuteWhenHelper . AddRegistration ( services , jobs , success , faulted ) ;
304
256
305
257
return this ;
306
258
}
@@ -389,3 +341,43 @@ INotificationStage<TJob> ExecuteWhen(
389
341
Action < DependencyBuilder < TJob > > ? success = null ,
390
342
Action < DependencyBuilder < TJob > > ? faulted = null ) ;
391
343
}
344
+
345
+ internal static class ExecuteWhenHelper
346
+ {
347
+ public static void AddRegistration < TJob > (
348
+ IServiceCollection services ,
349
+ List < JobDefinition > jobs ,
350
+ Action < DependencyBuilder < TJob > > ? success ,
351
+ Action < DependencyBuilder < TJob > > ? faulted )
352
+ where TJob : IJob
353
+ {
354
+ if ( success is not null )
355
+ {
356
+ var dependencyBuilder = new DependencyBuilder < TJob > ( services ) ;
357
+ success ( dependencyBuilder ) ;
358
+ var runWhenSuccess = dependencyBuilder . GetDependentJobOption ( ) ;
359
+ runWhenSuccess . ForEach ( s =>
360
+ {
361
+ services . TryAddSingleton ( s ) ;
362
+ if ( s . Type != typeof ( DynamicJobFactory ) )
363
+ {
364
+ services . TryAddSingleton ( s . Type ) ;
365
+ }
366
+ } ) ;
367
+ jobs . ForEach ( j => j . RunWhenSuccess = runWhenSuccess ) ;
368
+ }
369
+
370
+ if ( faulted is not null )
371
+ {
372
+ var dependencyBuilder = new DependencyBuilder < TJob > ( services ) ;
373
+ faulted ( dependencyBuilder ) ;
374
+ var runWhenFaulted = dependencyBuilder . GetDependentJobOption ( ) ;
375
+ runWhenFaulted . ForEach ( s =>
376
+ {
377
+ services . TryAddSingleton ( s ) ;
378
+ services . TryAddSingleton ( s . Type ) ;
379
+ } ) ;
380
+ jobs . ForEach ( j => j . RunWhenFaulted = runWhenFaulted ) ;
381
+ }
382
+ }
383
+ }
0 commit comments