单例继续初始化?

时间:2019-11-13 11:49:18

标签: blazor

我正在尝试在类之间共享数据,到目前为止,我通常通常在WinForms中使用这种方法,这似乎在Blazor中不起作用。

public class MainConfiguration
{
        private static MainConfiguration _instance = null;
        public static MainConfiguration instance
        { 
            get
            {
                if( _instance == null )
                    _instance = new MainConfiguration();

                return _instance;
            }            

        }

        public MainConfiguration()
        {
        }
}
  • 为什么实例在每个请求中继续进行初始化?和
  • 如何在Blazor中正确创建一个单例?

1 个答案:

答案 0 :(得分:3)

在Startup.cs中将MainConfiguration注册为单例服务:

services.AddSingleton<MainConfiguration>();

然后将其注入您需要访问的所有位置:

例如在.razor文件中,您可以执行以下操作:

@inject MainConfiguration MainConfiguration

或在@code部分:

[Inject]
public MainConfiguration MainConfiguration {get; set;}

您还可以通过构造函数将MainConfiguration注入到c#类中:

public class MyClass
{
    public MyClass(MainConfiguration mainConfiguration) { ... }
}