gpt4 book ai didi

c# - 从 .NET Core/ASP.NET Core 中的类库访问应用 key 数据

转载 作者:太空狗 更新时间:2023-10-30 00:23:27 25 4
gpt4 key购买 nike

要访问类库中的App Key,是否需要在每个需要访问AppKey的类库和类中都执行如下代码?

public static IConfigurationRoot Configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();

这是我在 Microsoft docs 中找到的, 但这看起来很多余。

项目中的启动类如下

 public class Startup
{
public IConfigurationRoot Configuration { get; set; }

public Startup()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json");

Configuration = builder.Build();
}

public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework().AddEntityFrameworkSqlServer()
.AddDbContext<DbContext>(options =>
options.UseSqlServer(Configuration["Data:MyDb:ConnectionString"]));
}
}

那我应该如何在项目的每个类中注入(inject)这个“IConfigurationRoot”。我是否必须在每个类库中重复这个 Startup 类?为什么这不是 .NET Core Framework 的一部分?

最佳答案

推荐的方法是使用 options pattern ,由 Microsoft 提供并在 ASP.NET Core 中大量使用。

基本上,您创建一个强类型类并在 Startup.cs 类中配置它。

public class MySettings 
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}

并在 Startup 类中对其进行初始化。

// load it directly from the appsettings.json "mysettings" section
services.Configure<MySettings>(Configuration.GetSection("mysettings"));

// do it manually
services.Configure<MySettings>(new MySettings
{
Value1 = "Some Value",
Value2 = Configuration["somevalue:from:appsettings"]
});

然后在您需要的任何地方注入(inject)这些选项。

public class MyService : IMyService
{
private readonly MySettings settings;

public MyService(IOptions<MySettings> mysettings)
{
this.settings = mySettings.Value;
}
}

关于c# - 从 .NET Core/ASP.NET Core 中的类库访问应用 key 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38572081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com