Dependency injection 在启动时初始化Singleton变量并在wole应用程序中使用

Dependency injection 在启动时初始化Singleton变量并在wole应用程序中使用,dependency-injection,blazor,blazor-webassembly,blazor-client-side,Dependency Injection,Blazor,Blazor Webassembly,Blazor Client Side,我想在一个对象中存储数据,我想在整个应用程序中使用它。我在Program.cs中创建了一个对象并注册为Singleton 对象: private Dictionary<string, string> _currentValues; public Dictionary<string, string> currentValues { get => _currentValues; set { _curren

我想在一个对象中存储数据,我想在整个应用程序中使用它。我在Program.cs中创建了一个对象并注册为Singleton

对象:

 private Dictionary<string, string> _currentValues;

 public Dictionary<string, string> currentValues
 {
      get => _currentValues;
      set
      {
           _currentValues = value;
           StateHasChanged();
      }
}
如果我现在使用localizeData.currentValues对象为空


缺少什么。如何在
Starttup
中初始化对象,以及如何在整个应用程序中使用数据?

您就快到了:D

要在组件中使用服务,您需要使用
inject
关键字:

@inject LocalizeData localizeData
问题是我用了

await builder.Build().RunAsync();
而不是

await host.RunAsync();
这就是为什么我创建了第二个实例,却无法访问初始化数据的原因

见文件:

我在组件中也这样做了。但不幸的是,每次注入新对象时,对象都会初始化,并且对象为空。我想如果我注册一个单例变量并初始化对象,我可以在整个应用程序中使用这些数据。不是吗?我需要的是一个在启动时初始化的“globale”对象。单件不是正确的方式吗?您运行的是WASM还是服务器?如果您正在运行WASM,那么每次加载应用程序时都会初始化服务,这可能就是您正在做的。另外,您在哪里可以获得
LocaData
?通常使用初始化方法初始化服务中的数据。
@inject LocalizeData localizeData
await builder.Build().RunAsync();
await host.RunAsync();