.NET Core开发日志——依赖注入 (5)

借助ConfigureContainer方法,要先在Program类中挂载AddAutofac方法。

public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args).ConfigureServices(services => services.AddAutofac()) .UseStartup<Startup>(); }

然后在Startup类中加入ConfigureContainer方法。

public void ConfigureContainer(ContainerBuilder builder) { builder.RegisterModule(new DefaultModule()); }

例中的DefaultModule类按照Autofac的通用方式实现。

public class DefaultModule : Module { protected override void Load(ContainerBuilder builder) { builder.RegisterType<HelloWorld>().As<IHelloWorld>(); } }

如果不想使用ConfigureContainer方法,也可以直接利用ConfigureServices方法:

public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule<DefaultModule>(); containerBuilder.Populate(services); var container = containerBuilder.Build(); return new AutofacServiceProvider(container); }

需要注意的是,使用这种方式时,ConfigureServices方法的返回类型要从void改成IServiceProvider。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydzfw.html