Asp.Net Core中全局变量的替代方案?

时间:2017-08-01 06:29:18

标签: caching configuration asp.net-core-mvc asp.net-core-webapi asp.net-core-1.1

在ASP.Net Core 1.1 Web API中,我需要存储一些必须可在所有控制器上访问的全局信息。因此,当客户端调用API上的某个端点时,必须设置某个变量(字典),该变量将从所有其他控制器中读取。从我所看到的,使用全局静态变量显然是个坏主意?也许有人会告诉我为什么,有什么更好的选择?我听说过使用配置文件或缓存......

1 个答案:

答案 0 :(得分:3)

许多开发人员不喜欢使用全局变量的一个主要原因是他们可能难以(或不可能)对使用它们的类进行完全单元测试。单元测试代码的开发人员更倾向于依赖注入而不是全局变量。

如果所需的变量被注入到班级中,那么#34;通过类的构造函数参数将它们传递给类,然后单元测试可以传递这些变量的已知值,这使得测试的期望结果可预测。这有助于单元测试。您可以从official documentation了解有关ASP.NET核心依赖项注入的更多信息。

全局变量的另一个问题是可以从任何地方更改它们。因此,在调试时,跟踪哪一段代码更改它们有时会很困难。通过使用依赖注入而不是全局变量,开发人员知道可以访问变量的特定类。