.net-core - 在 Main Program.cs .NetCore 3.1 控制台应用程序以外的方法中读取 appsettings.json 键
问题描述
基本上我必须从 .netcore 控制台应用程序调用 REST API,它会返回一些 xml,然后这个控制台应用程序需要从该 xml 创建一个 csv 文件。我需要在我的 appsettings.config 中保留 REST API url 和 csv 路径。我为此创建了两个密钥。
现在我不想在我的 main 方法中读取这些键,但我正在我的 main 方法中构建 ConfigurationBuilder,因此它仅在 Main 方法中可用。我的 Main 方法中的代码如下所示。
configuration = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json", true, true)
.AddEnvironmentVariables()
.Build();
其中配置是Program.cs 类级别的静态 IConfiguartion 配置 = 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;
}
}
}
...并在您需要的任何地方使用它。
推荐阅读
- sql-server - 在 sys.objects 中搜索对象我注意到我的表类型具有 name 列的前缀和后缀
- dart - VSCode 片段将第一个大写字母转换为小写
- asp.net-core - ASP.NET Core 3 - 当工厂方法所需的依赖项可用时,是否可以在 Configure 方法中添加 SignalR 服务?
- kubernetes - 使用 bitnami/rabbitmq 图表从 github 安装额外的 rabbitmq 插件
- kubernetes - Istio 复制的控制平面 - 503 不可用
- c# - 将自定义对象作为参数传递给控制器
- algorithm - 我们可以使用 n(V) <= n(E) 来检测循环,同时将 Kruskal 的 MST 用于无向图吗?
- amazon-web-services - 在 Dockerrun.aws.json 中为 AWS Elastic Beanstalk 使用环境变量或 .env 文件
- python - WinPython 3.8.5 给了我 Python 2.7
- python - 在 Django 中使用 Apache Ignite