WPF 棱镜用户对象
本文关键字:对象 用户 棱镜 WPF | 更新日期: 2023-09-27 18:35:24
我是WPF和MVVM Prism的新手。我担任 ASP.NET 开发人员已有 5 年多了,最近切换到 WPF 项目。
我目前正在将 Prism 5.0 与 Unity 一起使用。遵循该模式的主要目的是实现模块化和松散耦合。
我的问题是:我想让我的用户对象在所有模块中通用且可访问。
这就是我到目前为止所做的。启动时,用户会在登录管理器项目中看到登录屏幕 (LoginView.xaml)。然后,LoginViewModel 将验证凭据。成功验证后,LoginViewModel 会将这个检索到的对象传递给基础结构项目中的静态类。由于用户登录只是单个/通用实例,因此我在基础结构项目下创建了一个静态类来保存用户对象。
我尝试过 GenericPrincipal,虽然它确实跨视图持久化数据,但它不够复杂,无法保存我需要的数据。因此,我选择了静态课程。
有人对此有更好的建议吗?
与其在静态类中注册用户对象,不如在 Unity 容器本身中注册用户实例。
在 LoginViewModel 中,您应该获取 IUnityContainer 类的实例。
public LoginViewModel(IUnityContainer container)
{
Container = container;
}
在登录方法中,注册用户对象:
private void Login(object obj)
{
...
if (user.Authenticated)
{
Container.RegisterInstance("CurrentUser", user);
}
...
}
若要访问对象,请使用以下代码片段:
Container.Resolve<YourUserClassHere>("CurrentUser");
有关更多详细信息,请参阅:在 WPF 中使用 Unity 和 MVVM 持久化用户凭据