我可以在 Blazor 客户端应用程序的多个区域中注入 Singleton-DependencyInjected 对象吗?

问题描述 投票:0回答:1

我有一个 Blazor 应用程序,我将一个类 (NotificationClass) 注入到 MainLayout.razor。

NotificationClass 有一个 Errors 字符串属性。我的目标是使用此类绑定到某个组件,以便我可以显示客户端应用程序任何区域中发生的错误。最终的想法是在发生错误时显示 Toast 通知。

但到目前为止这似乎不起作用。

问题 是否可以将单例实例注入到应用程序的不同区域?

如果是这样,我想我需要实现一个 Changed 事件,以便我可以在 MainLayout.razor 中调用 StateHasChanged。

已解决

我能够通过完全按照我的怀疑去做来解决这个问题。我 引发了一个由 MainLayout 处理的事件。关于那个

事件已处理,我调用 this.StateHasChanged()。

dependency-injection blazor
1个回答
0
投票

是的,您可以拥有一个单例,通过多个组件上的 DI 获取对象,并在该组件上引发和侦听事件。例如,我使用它来显示 Toast:任何组件都可以引发带有 toast 文本的事件,主布局侦听该事件并显示 toast。

重要:

  • 请记住在
    IDisposable
    上实现
    MainLayout
    以在组件释放时释放事件订阅。
  • 调用
    InvokeAsync(StateHasChanged)
    更新 UI,因为更改是通过事件进行的。
© www.soinside.com 2019 - 2024. All rights reserved.