在Main Program.cs.NetCore 3.1控制台应用程序以外的方法中读取appsettings.json键



基本上,我必须从.netcore控制台应用程序调用REST API,该应用程序将返回一些xml,然后此控制台应用程序需要从该xml创建csv文件。我需要在我的appsettings.config中保留REST API url和csv路径。我为此创建了两个密钥。

现在我不想在我的主方法中读取这些键,但我正在主方法中构建ConfigurationBuilder,因此它只在main方法中可用。Main方法中的代码如下所示。

configuration = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json", true, true)
.AddEnvironmentVariables()
.Build();

其中configuration是Program.cs类级别的static IConfiguration configuration=null。目前,我已经将这个ConfigurationBuilder作为一个类级静态变量,在Main中初始化它,然后在其他地方读取它,但不确定这是一个好方法还是有更好的方法?如有任何建议,我们将不胜感激。

在我看来,您应该像@Marco Luzzaras评论中描述的那样使用依赖注入。

但是,如果在您的场景中不可能,您也可以通过将所有内容封装在Singleton 中来访问相同的配置

public class ConfigurationProvider 
{
private static IConfiguration _instance;
public static IConfiguration Instance 
{
get 
{
if(_instance == null)
{
_instance = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json", optional: true)
.AddEnvironmentVariables()
.Build();
}
return _instance;
}
}
}

并在任何需要的地方使用它。

dotnet fiddle示例

最新更新