当前位置: 移动技术网 > IT编程>开发语言>.net > windows服务autofac注入quartz任务

windows服务autofac注入quartz任务

2019年06月06日  | 移动技术网IT编程  | 我要评论

迅雷3d电影,女人公敌第二季,冲气娃

一、nuget下载相关类库引用

  install-package quartz

      install-package autofac

  install-package autofac.configuration

      install-package autofac.extras.quartz

 

二、配置autofac注入

public class autofacutil
    {
        /// <summary>
        /// autofac容器对象
        /// </summary>
        private static icontainer _container;

        /// <summary>
        /// 初始化autofac
        /// </summary>
        public static void initautofac()
        {
            var builder = new containerbuilder();

            //配置接口依赖
            builder.registerinstance<idbconnection>(dbfactory.createconnection()).as<idbconnection>();
            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();
        }

        /// <summary>
        /// 从autofac容器获取对象
        /// </summary>
        /// <typeparam name="t"></typeparam>
        /// <returns></returns>
        public static t getfromfac<t>()
        {
            return _container.resolve<t>();
        }
    }

 

三、windows服务注入autofac

    static class program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void main()
        {
            //windows服务初始化工作
            autofacutil.initautofac();

            servicebase[] servicestorun;
            servicestorun = new servicebase[] 
            { 
                new service1() 
            };
            servicebase.run(servicestorun);
        }
    }

 

四、quartz任务中注入服务

 /// <summary>
    /// 推送短信任务
    /// </summary>
    public class pushsmsjob : ijob
    {
        private readonly ismsnoticerepository _smsnoticerepository;

        public pushsmsjob(ismsnoticerepository smsnoticerepository)
        {
            _smsnoticerepository = smsnoticerepository;
        }

        /// <summary>
        /// 执行推送短信的具体实现代码
        /// </summary>
        /// <param name="context"></param>
        public void execute(ijobexecutioncontext context)
        {
            //获取待发送短信列表
            var waitsendlist = _smsnoticerepository.getwaitforsendsms();
        }
    }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网