当前位置: 移动技术网 > IT编程>开发语言>c# > Autofac依赖注入

Autofac依赖注入

2020年05月09日  | 移动技术网IT编程  | 我要评论
using autofac;
using autofac.extras.quartz;
using autofac.integration.webapi;
using quartz;
using star.enterprise.crm.jobscheduler.job;
using system.collections.specialized;
using system.configuration;
using system.reflection;
using system.web.http;
namespace webapi
{
    public static class autofacconfig
    {

        private readonly static string _dicommonconfstring = configurationmanager.appsettings["dicommon"].trim();
        private readonly static string _direpositoryconfstring = configurationmanager.appsettings["direpository"].trim();
        private readonly static string _diservicesconfstring = configurationmanager.appsettings["diservices"].trim();
        private readonly static string _diintegrationconfstring = configurationmanager.appsettings["diintegration"].trim();
        private readonly static string _diauthorizationconfstring = configurationmanager.appsettings["diauthorization"].trim();
        

        public static ischeduler initautofacinit()
        {
            var builder = new containerbuilder();

            // configure and register quartz
            var schedulerconfig = new namevaluecollection { { "quartz.threadpool.threadcount", "10" }, { "quartz.scheduler.threadname", "scheduler" } };

            builder.registermodule(new quartzautofacfactorymodule
            {
                configurationprovider = c => schedulerconfig
            });
            builder.registermodule(new quartzautofacjobsmodule(typeof(testjob).assembly));
            //注册所有的apicontrollers
            builder.registerapicontrollers(assembly.getexecutingassembly()).propertiesautowired().instanceperlifetimescope();



            //注册所有的接口实现
            assembly dicommon = assembly.load(_dicommonconfstring);
            assembly direpository = assembly.load(_direpositoryconfstring);
            assembly diservices = assembly.load(_diservicesconfstring);
            assembly diintegration = assembly.load(_diintegrationconfstring);
            assembly diauthorization = assembly.load(_diauthorizationconfstring);

            builder.registerassemblytypes(dicommon, direpository, diservices, diintegration, diauthorization).asimplementedinterfaces();
            builder.registertypes(direpository.getexportedtypes()).propertiesautowired().instanceperlifetimescope();
            var container = builder.build();
            //注册api容器需要使用httpconfiguration对象
            httpconfiguration config = globalconfiguration.configuration;
            
            config.dependencyresolver = new autofacwebapidependencyresolver(container);

            // 依赖注入scheduler 并 返回
            return container.resolve<ischeduler>();
        }
    }
}

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网