Net Core:从 Autofac 模块访问 appsettings.json 值
Net Core: access to appsettings.json values from Autofac Module
AspNet 核心应用程序
1) 这样的 Autofac 模块
public class AutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
//Register my components. Need to access to appsettings.json values from here
}
}
2) 第 1 步中的模块已注册到 Startup.cs
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterModule(new AutofacModule());
}
如何从 AutofacModule
访问 appsettings.json
值?我需要它来在 AutofacModule
中创建我的对象并将其用于 DI。
需要更改步骤 №2
public void ConfigureContainer(ContainerBuilder builder)
{
//get settigns as object from config
var someSettings= Configuration.GetSection(typeof(SomeSettings).Name).Get<SomeSettings>();
//put settings into module constructor
builder.RegisterModule(new AutofacModule(someSettings));
}
我不知道是不是 "best practise" 方式,但它有效。
所以目前也在尝试这个。
首先是获取必要的 nuget 包,并将它们作为 using 语句添加到 class。
using Microsoft.Extensions.Configuration.Json;
using Autofac;
using Autofac.Configuration;
using Autofac.Extensions.DependencyInjection;
在您的 Program.cs 主或 Startup.cs...
public static IContainer Container { get; set; }
Main() or Startup()
{
// Add the configuration to the ConfigurationBuilder.
var config = new ConfigurationBuilder();
config.AddJsonFile("appsettings.json");
var containerBuilder = new ContainerBuilder();
// Register the ConfigurationModule with Autofac.
var configurationModule = new ConfigurationModule(config.Build());
containerBuilder.RegisterModule(configurationModule);
//register anything else you need to...
Container = containerBuilder.Build();
}
这会将配置模块注册到您的 autoFac 容器中,之后您可以使用构造函数注入来通过这一轮...
public class YourController
{
private readonly IContainer _config;
public YourController(IContainer configuration)
{
// Use IContainer instance
_config = configuration;
}
希望对您有所帮助,如果您有任何不同的方法,请分享。
AspNet 核心应用程序
1) 这样的 Autofac 模块
public class AutofacModule : Module
{
protected override void Load(ContainerBuilder builder)
{
//Register my components. Need to access to appsettings.json values from here
}
}
2) 第 1 步中的模块已注册到 Startup.cs
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterModule(new AutofacModule());
}
如何从 AutofacModule
访问 appsettings.json
值?我需要它来在 AutofacModule
中创建我的对象并将其用于 DI。
需要更改步骤 №2
public void ConfigureContainer(ContainerBuilder builder)
{
//get settigns as object from config
var someSettings= Configuration.GetSection(typeof(SomeSettings).Name).Get<SomeSettings>();
//put settings into module constructor
builder.RegisterModule(new AutofacModule(someSettings));
}
我不知道是不是 "best practise" 方式,但它有效。
所以目前也在尝试这个。
首先是获取必要的 nuget 包,并将它们作为 using 语句添加到 class。
using Microsoft.Extensions.Configuration.Json;
using Autofac;
using Autofac.Configuration;
using Autofac.Extensions.DependencyInjection;
在您的 Program.cs 主或 Startup.cs...
public static IContainer Container { get; set; }
Main() or Startup()
{
// Add the configuration to the ConfigurationBuilder.
var config = new ConfigurationBuilder();
config.AddJsonFile("appsettings.json");
var containerBuilder = new ContainerBuilder();
// Register the ConfigurationModule with Autofac.
var configurationModule = new ConfigurationModule(config.Build());
containerBuilder.RegisterModule(configurationModule);
//register anything else you need to...
Container = containerBuilder.Build();
}
这会将配置模块注册到您的 autoFac 容器中,之后您可以使用构造函数注入来通过这一轮...
public class YourController
{
private readonly IContainer _config;
public YourController(IContainer configuration)
{
// Use IContainer instance
_config = configuration;
}
希望对您有所帮助,如果您有任何不同的方法,请分享。