36 lines
1.1 KiB
C#
36 lines
1.1 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using System;
|
|
using Quartz;
|
|
using System.Linq;
|
|
|
|
namespace SA.Quartz
|
|
{
|
|
/// <summary>
|
|
/// Extensions method
|
|
/// </summary>
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
/// <summary>
|
|
/// 初始化任务
|
|
/// </summary>
|
|
/// <param name="services"></param>
|
|
/// <param name="job"></param>
|
|
/// <returns></returns>
|
|
public static IServiceCollection AddQuartzJob(this IServiceCollection services)
|
|
{
|
|
var types = AppDomain.CurrentDomain.GetAssemblies()
|
|
.SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IJob))))
|
|
.ToArray();
|
|
foreach (var type in types)
|
|
{
|
|
foreach (QuartzJobAttribute quartzJob in type.GetCustomAttributes(typeof(QuartzJobAttribute), true))
|
|
{
|
|
services.AddTransient(type);
|
|
}
|
|
}
|
|
services.AddSingleton<QuartzStartup>();
|
|
return services;
|
|
}
|
|
}
|
|
}
|