作者:zhefu | 来源:互联网 | 2023-05-19 16:33
一、nuget下载相关类库引用install-package Quartz install-package Autofacinstall-package Autofac.Con
一、nuget下载相关类库引用
install-package Quartz
install-package Autofac
install-package Autofac.Configuration
install-package Autofac.Extras.Quartz
二、配置autofac注入
public class AutofacUtil
{
///
/// Autofac容器对象
///
private static IContainer _container;
///
/// 初始化autofac
///
public static void InitAutofac()
{
var builder = new ContainerBuilder();
//配置接口依赖
builder.RegisterInstance(DBFactory.CreateConnection()).As();
builder.RegisterGeneric(typeof(GenericRepository<>)).As(typeof(IGenericRepository<>));
//注入仓储类
builder.RegisterAssemblyTypes(Assembly.Load("Demo.Repository"))
.Where(x => x.Name.EndsWith("Repository"))
.AsImplementedInterfaces();
//配置quartz.net依赖注入
builder.RegisterModule(new QuartzAutofacFactoryModule());
builder.RegisterModule(new QuartzAutofacJobsModule(Assembly.GetExecutingAssembly()));
_container = builder.Build();
}
///
/// 从Autofac容器获取对象
///
///
///
public static T GetFromFac()
{
return _container.Resolve();
}
}
三、windows服务注入autofac
static class Program
{
///
/// 应用程序的主入口点。
///
static void Main()
{
//windows服务初始化工作
AutofacUtil.InitAutofac();
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
四、quartz任务中注入服务
///
/// 推送短信任务
///
public class PushSMSJob : IJob
{
private readonly ISMSNoticeRepository _smsNoticeRepository;
public PushSMSJob(ISMSNoticeRepository smsNoticeRepository)
{
_smsNoticeRepository = smsNoticeRepository;
}
///
/// 执行推送短信的具体实现代码
///
///
public void Execute(IJobExecutionContext context)
{
//获取待发送短信列表
var waitSendList = _smsNoticeRepository.GetWaitForSendSMS();
}
}