Skip to content

Commit bdf488e

Browse files
committed
fix: Don't register DynamicJobFactory into container
1 parent 14df206 commit bdf488e

File tree

1 file changed

+42
-50
lines changed

1 file changed

+42
-50
lines changed

src/NCronJob/Configuration/NCronJobOptionBuilder.cs

Lines changed: 42 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -199,31 +199,7 @@ public INotificationStage<TJob> AddNotificationHandler<TJobNotificationHandler>(
199199
/// <inheritdoc />
200200
public INotificationStage<TJob> ExecuteWhen(Action<DependencyBuilder<TJob>>? success = null, Action<DependencyBuilder<TJob>>? faulted = null)
201201
{
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);
227203

228204
return this;
229205
}
@@ -276,31 +252,7 @@ public INotificationStage<TJob> AddNotificationHandler<TJobNotificationHandler>(
276252
public INotificationStage<TJob> ExecuteWhen(Action<DependencyBuilder<TJob>>? success = null,
277253
Action<DependencyBuilder<TJob>>? faulted = null)
278254
{
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);
304256

305257
return this;
306258
}
@@ -389,3 +341,43 @@ INotificationStage<TJob> ExecuteWhen(
389341
Action<DependencyBuilder<TJob>>? success = null,
390342
Action<DependencyBuilder<TJob>>? faulted = null);
391343
}
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

Comments
 (0)