在blazor中加载新页面时,我的单例对象不保持其状态。
我有这个界面:
public interface IPreLaunchSession
{
bool IsPreLaunchAuthenticated { get; set; }
}
该接口的类
public class PreLaunchSession : IPreLaunchSession
{
public bool IsPreLaunchAuthenticated { get; set; }
public PreLaunchSession()
{
}
}
我将其注册为单身人士
builder.Services.AddSingleton<IPreLaunchSession,PreLaunchSession>();
然后将其注入页面
@inject Services.IPreLaunchSession PreLaunchSession
在注入这些页面的地方,我测试并设置了bool变量。
在另一部分代码中,我使用NavigationManager进行重定向。像这样:
Navigation.NavigateTo("/MyOtherPath");
这似乎可以工作一段时间,但随后使用a<NavLink/>
可以转到另一页,一旦发生这种情况,就似乎重新创建了PreLaunchSession对象,并且其中的bool变量被重置为默认值(这是错误的)
这里的任何帮助都将有助于理解为什么导航发生时会重新创建单例对象。
看看如何在页面重新加载时在blazor Web程序集中的单例状态容器中保留值
刷新应用程序(F5等)时,该应用程序实际上已关闭并再次打开。
这将导致整个应用程序重新启动,并且持久性单例对象的所有内存都将丢失。
我最终使用localstorage在完全刷新或制表符更改之间保持不变。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句