在ASP.NET Core控制器之间共享变量并首次初始化

时间:2018-02-22 12:48:40

标签: c# asp.net asp.net-core

我有一组可以从各种控制器访问的变量。因为加载它们是一个相当漫长的操作,我想只在应用程序启动时加载它们,然后才能通过各种控制器设置访问它们。

现在,我最好的解决方案是使用一个静态对象,通过调用方法“初始化”来初始化并保存所有变量,但它感觉非常黑,并且不正确。

实现同样目标的更好解决方案是什么?

1 个答案:

答案 0 :(得分:3)

您可以创建实例类,将所有属性放入其中,并在DI容器中将其注册为Singleton。您将在构造函数中为每个控制器接收该实例。 在Startup.cs ConfigureServices方法中:

services.AddSingleton<YourPropertiesClass()>;

另一个选择是用户InMemoryCache:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory 但是对于你的情况,我认为这是过度复杂的。