.net-core - .NET Core 全局变量未获得初始设置
问题描述
我正在创建一个全局变量,但首先我需要用数据对其进行初始化。该变量似乎正在工作,但是没有设置初始化数据。这是我的ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
//Gets data for the Global variable
MyOptions opt = SetValues();
Action<MyOptions> options = (set => set = opt);
services.Configure(options);
services.Configure<MyOptions>(options);
services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<MyOptions>>().Value);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
然后在不同的控制器中,我这样称呼它;
public ValuesController(IOptions<MyOptions> options)
{
Options = settings.Value;
}
在测试中,控制器可以更改 中的属性Options
,但是,完成的设置MyOptions opt = SetValues();
不存在。我究竟做错了什么?
解决方案
在这种情况下,我认为没有必要使用内置选项模式。
此代码不使用它的好处(例如从 appsettings 读取设置)。
您可以在不使用 IOptions 包装器的情况下将 MyOptions 实例注册为单例(如下所示)。
services.AddSingleton(opt);
使用此功能的更好方法是将设置中的选项放入appsetting.json中。
推荐阅读
- php - 如何在 PHP 中将 ISO 8061 转换为日期时间?
- debugging - 运行 dlv debug test.go 时无法在二进制文件中找到 __debug_line 部分
- c# - 如何从具有特定属性的 C# 对象列表创建 json 字符串?
- java - 是否可以为 Set 设置精度
.contains()? - python - Celery + Django 在启动时
- android - 渲染问题在当前主题中找不到样式“bottomNavigationStyle”
- jquery - 如何使用 jQuery Validation 以准确的澳大利亚格式验证输入字段电话?
- php - 在哪里可以找到通过 TCP 接收的 GPS 数据?
- javascript - ajax循环settimeout,仅在前一个请求完成后才新请求
- javascript - 使用 new 关键字在构造函数中创建类的实例是不好的做法吗?