ASP.NET Core 3.1 WebApi 系列【三】使用Autofac实现依赖注入
.NET Core 3.0 引入了具有强类型容器配置的功能。
它提供了 ConfigureContainer 方法,使用Autofac来注册事物,而不必通过 ServiceCollection 来注册事物。
1.首先我们需要在 Program.cs 中修改服务工厂,内置是 ServiceProviderFactory 的,我们将要指定为: AutofacServiceProviderFactory 。
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).UseServiceProviderFactory(new AutofacServiceProviderFactory());//启用autofac容器
2.Startup.cs 中添加方法 ConfigureContainer ,并添加以下代码。
#region 依赖注入 public void ConfigureContainer(ContainerBuilder builder) { var basePath = AppContext.BaseDirectory; string IServicePath = Path.Combine(basePath, "WebApplication.dll"); Assembly IService = Assembly.LoadFrom(IServicePath); builder.RegisterAssemblyTypes(IService).InstancePerDependency().PropertiesAutowired().AsImplementedInterfaces(); } #endregion
注意:其中WebApplication.dll为接口和实现接口类的所在项目的dll文件,与项目名称相同;
测试:新增两个接口与实现类,结构如图
将接口写入构造函数,即可引用接口中的方法。ctrl+f5运行,调用接口如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!