Autofac 批量注册程序集下的服务
public class AutofacModuleRegister : Autofac.Module { protected override void Load(ContainerBuilder builder) { var basePath = AppContext.BaseDirectory; #region 带有接口层的服务注入 var servicesDllFile = Path.Combine(basePath, "CoreCms.Net.Services.dll"); var repositoryDllFile = Path.Combine(basePath, "CoreCms.Net.Repository.dll"); if (!(File.Exists(servicesDllFile) && File.Exists(repositoryDllFile))) { var msg = "Repository.dll和Services.dll 丢失,因为项目解耦了,所以需要先F6编译,再F5运行,请检查 bin 文件夹,并拷贝。"; throw new Exception(msg); } // 获取 Service.dll 程序集服务,并注册 var assemblysServices = Assembly.LoadFrom(servicesDllFile); //支持属性注入依赖重复 builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces().InstancePerDependency() .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies); // 获取 Repository.dll 程序集服务,并注册 var assemblysRepository = Assembly.LoadFrom(repositoryDllFile); //支持属性注入依赖重复 builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces().InstancePerDependency() .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies); #endregion } } Program.cs #region AutoFac注册============================================================================ builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder => { //获取所有控制器类型并使用属性注入 var controllerBaseType = typeof(ControllerBase); containerBuilder.RegisterAssemblyTypes(typeof(Program).Assembly) .Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType) .PropertiesAutowired(); containerBuilder.RegisterModule(new AutofacModuleRegister()); }); #endregion
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2021-09-18 .Net 调用 sqlserver 存储过程实例