新彩天欢迎您!
幻海优品

ASP .NET Core Autofac 4.0使用ConfigureContainer配置和示例代码

1、Autofac的配置

ASP.NET Core 1.1引入了具有强类型容器配置的能力。 它提供了一个ConfigureContainer方法,您可以使用Autofac单独注册,而不是使用ServiceCollection注册。

1)安装Autofac的Nuget包

在Nuget管理程序中,搜索'Autofac.Extensions.DependencyInjection' =》选中然后点击'安装'

2)使用ConfigureContainer配置

  • 在配置WebHostBuilderProgram.Main方法中,调用AddAutofacAutofac挂钩到启动管道中。
  • Startup类的ConfigureServices方法中,使用其他库提供的扩展方法将内容注册到IServiceCollection中。
  • Startup类的ConfigureContainer方法中,将内容直接注册到AutofacContainerBuilder中。

IServiceProvider将自动为您创建,因此除了注册外,您无需做任何事情。

2、在ASP .NET Core中使用ConfigureContainer配置Autofac示例代码

public class Program{  public static void Main(string[] args)  {     //此处的ConfigureServices调用允许     //在Startup with中支持ConfigureContainer     //一个强类型的ContainerBuilder。    var host = new WebHostBuilder()        .UseKestrel()        .ConfigureServices(services => services.AddAutofac())        .UseContentRoot(Directory.GetCurrentDirectory())        .UseIISIntegration()        .UseStartup<Startup>()        .Build();    host.Run();  }}public class Startup{  public Startup(IHostingEnvironment env)  {    var builder = new ConfigurationBuilder()        .SetBasePath(env.ContentRootPath)        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)        .AddEnvironmentVariables();    this.Configuration = builder.Build();  }  public IConfigurationRoot Configuration { get; private set; }   //在ConfigureServices中注册依赖项。   //在下面的ConfigureContainer方法之前由运行时调用。  public void ConfigureServices(IServiceCollection services)  {   //将服务添加到集合中。 不建造或返回     //任何IServiceProvider或ConfigureContainer方法     //不会被调用。    services.AddMvc();  }   //您可以在ConfigureContainer中直接注册内容   //使用Autofac。 这在ConfigureServices之后运行   //这里将覆盖在ConfigureServices中进行的注册。   //不要建造容器; 为你做完了。 如果你   //需要对容器的引用,你需要使用   //后面会显示“没有ConfigureContainer”机制。  public void ConfigureContainer(ContainerBuilder builder)  {      builder.RegisterModule(new AutofacModule());  }   //配置是添加中间件的位置。 这称之为   // ConfigureContainer。 您可以使用IApplicationBuilder.ApplicationServices   //如果你需要从容器中解决问题。  public void Configure(    IApplicationBuilder app,    ILoggerFactory loggerFactory)  {      loggerFactory.AddConsole(this.Configuration.GetSection("Logging"));      loggerFactory.AddDebug();      app.UseMvc();  }}

相关文档ASP .NET Core Autofac 4.0使用ContainerBuilder(Populate)配置和示例代码

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除