@@ -13,7 +13,6 @@ public static class ServiceCollectionExtensions
13
13
/// <typeparam name="TImplementation">Service implementation</typeparam>
14
14
/// <param name="collection">The NET Core dependency injection service</param>
15
15
/// <param name="builder">A function the will receive the JobBuilder and TriggerBuilder to customize the job's behavior</param>
16
- /// <returns></returns>
17
16
public static IServiceCollection AddJobService < TService , TImplementation > ( this IServiceCollection collection , Action < JobBuilder , TriggerBuilder > builder )
18
17
where TService : class
19
18
where TImplementation : class , TService , IJob
@@ -28,7 +27,6 @@ public static IServiceCollection AddJobService<TService, TImplementation>(this I
28
27
/// </summary>
29
28
/// <typeparam name="TService">Service implementation</typeparam>
30
29
/// <param name="collection">The NET Core dependency injection service</param>
31
- /// <param name="builder"></param>
32
30
/// <param name="builder">A function the will receive the JobBuilder and TriggerBuilder to customize the job's behavior</param>
33
31
public static IServiceCollection AddJobService < TService > ( this IServiceCollection collection , Action < JobBuilder , TriggerBuilder > builder )
34
32
where TService : class , IJob
@@ -38,6 +36,43 @@ public static IServiceCollection AddJobService<TService>(this IServiceCollection
38
36
return collection ;
39
37
}
40
38
39
+ /// <summary>
40
+ /// Adds a job to the scheduler, without scheduling it
41
+ /// </summary>
42
+ /// <typeparam name="TService">Service implementation</typeparam>
43
+ /// <param name="collection">The NET Core dependency injection service</param>
44
+ /// <param name="builder">A function the will receive the JobBuilder to customize the job's behavior</param>
45
+ public static IServiceCollection AddJobService < TService > ( this IServiceCollection collection , Action < JobBuilder > builder )
46
+ where TService : class , IJob
47
+ {
48
+ collection . AddSingleton < TService > ( ) ;
49
+ RegisterJob < TService > ( collection , builder ) ;
50
+ return collection ;
51
+ }
52
+
53
+ /// <summary>
54
+ /// Adds a job to the scheduler, without scheduling it
55
+ /// </summary>
56
+ /// <typeparam name="TService">Abstract service</typeparam>
57
+ /// <typeparam name="TImplementation">Service implementation</typeparam>
58
+ /// <param name="collection">The NET Core dependency injection service</param>
59
+ /// <param name="builder">A function the will receive the JobBuilder to customize the job's behavior</param>
60
+ public static IServiceCollection AddJobService < TService , TImplementation > ( this IServiceCollection collection , Action < JobBuilder > builder )
61
+ where TService : class
62
+ where TImplementation : class , TService , IJob
63
+ {
64
+ collection . AddSingleton < TService , TImplementation > ( ) ;
65
+ RegisterJob < TService > ( collection , builder ) ;
66
+ return collection ;
67
+ }
68
+
69
+ private static void RegisterJob < TService > ( IServiceCollection collection , Action < JobBuilder > builder )
70
+ {
71
+ var jobBuilder = JobBuilder . Create ( typeof ( TService ) ) . StoreDurably ( ) ;
72
+ builder ( jobBuilder ) ;
73
+ collection . AddSingleton < IJobSchedule > ( new JobSchedule ( jobBuilder . Build ( ) , null ) ) ;
74
+ }
75
+
41
76
private static void RegisterJob < TService > ( IServiceCollection collection , Action < JobBuilder , TriggerBuilder > builder ) where TService : class
42
77
{
43
78
var jobBuilder = JobBuilder . Create ( typeof ( TService ) ) ;
0 commit comments