在阅读了有关依赖项注入Here的这篇文章之后,除了控制器类之外,我对如何读取appsetting仍然没有一个清晰的了解。
比如说我有一个助手类,其中包含一堆我打算使用的静态方法,我没有创建此类的实例,我如何读取设置值以在此类方法中使用?
答案 0 :(得分:2)
我曾经创建过一个助手类,以从我的一个应用程序中的appsettings.config中读取数据:
public static class ConfigValueProvider
{
private static readonly IConfigurationRoot Configuration;
static ConfigValueProvider()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
public static string Get(string name)
{
return Configuration[name];
}
}
但是后来我查看了我的应用程序,以摆脱依赖于应用程序配置的static
方法,以使我的应用程序可测试。
答案 1 :(得分:2)
您应该使用服务。配置如下:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<JSonAsClass>(Configuration.GetSection("MySectionName"));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
然后,您可以将JSonAsClass注入要使用的任何类中:
private JSonAsClass jSonAsClass;
public MailService(IOptions<JSonAsClass> jSonAsClass)
{
this.jSonAsClass = jSonAsClass.Value;
}