【发布时间】:2020-08-05 00:04:39
【问题描述】:
我需要设置全局值并从项目中的任何位置读取它。 是什么场景,如果AddSingleton怎么办?
我见过这个,但它对我不起作用: Global Variables in ASP.Net Core 2
【问题讨论】:
我需要设置全局值并从项目中的任何位置读取它。 是什么场景,如果AddSingleton怎么办?
我见过这个,但它对我不起作用: Global Variables in ASP.Net Core 2
【问题讨论】:
Noah 的回答非常好,但是对于更简单的情况,您通常希望:
在根命名空间中创建一个包含所有数据的静态类
public static class Cache
{
public static string Value1 => "Example";
public static int Value2 => 42;
}
完成
您可以在系统范围内访问它的值,如下所示:
var mySharedStringValue = Cache.Value1;
如果您需要在启动时“加载”这些值,您可以将属性的签名更改为
public static string Value1 { get; private set; }
并使用static constructor 或应用启动时在 Startup.cs 类中调用的简单静态初始化方法。
【讨论】:
如果您想全局读取静态值,我建议您使用configuration system。它允许在需要读取的地方注入配置。
如果您需要共享可以更改的数据,您需要一些共享的线程安全机制。框架中内置的一个选项是使用in-memory cache,这是一个可在任何地方注入的全局共享缓存。
【讨论】: