从类库项目中访问appsettings.json文件设置

我知道如何在web项目上设置appsettings.json文件。但是你能告诉我如何从类库项目中访问它吗?

我可以在web项目中按如下所示对其进行配置。那么如何从类库项目中访问这些值? 那可能吗 ?

 public class MyConfig { public string ApplicationName { get; set; } public int Version { get; set; } } public class Startup { public IConfigurationRoot Configuration { get; set; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) Configuration = builder.Build(); } } public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // Add functionality to inject IOptions services.AddOptions(); // Add our Config object so it can be injected services.Configure(Configuration); } public class HomeController : Controller { private readonly IOptions config; public HomeController(IOptions config) { this.config = config; } // GET: // public IActionResult Index() => View(config.Value); } 

您需要获取该部分然后绑定它,更改它

 // Add our Config object so it can be injected services.Configure(Configuration); 

 // Add our Config object so it can be injected services.Configure(option => Configuration.GetSection("MyConfig").Bind(option)); 

然后你将在HomeController或你注入它的任何其他地方获得值。

 public class HomeController : Controller { private readonly IOptions config; public HomeController(IOptions config) { this.config = config; } public IActionResult Index() { var value = config.Value.ApplicationName; var vars = config.Value.Version; return View(); } } 

appsettings.json

 { "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "MyConfig": { "ApplicationName": "My Application Name", "Version": 1 } } 

在此处输入图像描述

我们如何将此另外称为Web项目?

Asp.Net Core DI在创建控制器之前解决所有依赖关系。 因此,我们可以创建一个接口并实现它。 然后我们可以将它注入控制器并从那里访问appsettings.json设置。

ICategory.cs

 public interface ICategory { IOptions config; IQueryable Get(); } 

Category.cs

 public class Category : ICategory { private readonly IOptions config; public Category(IOptions config) { this.config = config; } public Categories Get(long id) { var value = config.Value.ApplicationName; var vars = config.Value.Version; return category; } } 

CategoryController.cs

 public CategoriesController(ICategory category) { this.category = category; } 

当我们调用category.Get()方法时,我们可以访问该方法中的appsettings.json设置。

Startup.cs ConfigureServices方法中注册它

 services.AddTransient();