跨 ASP.NET Core 控制器共享变量和首次初始化

404*_*404 2 c# asp.net asp.net-core

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

现在我最好的解决方案是使用一个静态对象,该对象通过调用“Initialize”方法来初始化和保存所有变量,但感觉很不合适。

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

and*_*nik 6

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

services.AddSingleton<YourPropertiesClass()>;
Run Code Online (Sandbox Code Playgroud)

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