Autofac依赖注入
程序员文章站
2022-04-15 21:29:18
using Autofac; using Autofac.Extras.Quartz; using Autofac.Integration.WebApi; using Quartz; using STAr.Enterprise.CRM.JobScheduler.Job; using System.C ......
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>(); } } }