我有一组可以从各种控制器访问的变量。因为加载它们是一个相当漫长的操作,我想只在应用程序启动时加载它们,然后才能通过各种控制器设置访问它们。
现在,我最好的解决方案是使用一个静态对象,通过调用方法“初始化”来初始化并保存所有变量,但它感觉非常黑,并且不正确。
实现同样目标的更好解决方案是什么?
答案 0 :(得分:3)
您可以创建实例类,将所有属性放入其中,并在DI容器中将其注册为Singleton。您将在构造函数中为每个控制器接收该实例。 在Startup.cs ConfigureServices方法中:
services.AddSingleton<YourPropertiesClass()>;
另一个选择是用户InMemoryCache:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory 但是对于你的情况,我认为这是过度复杂的。