WPF 棱镜用户对象

本文关键字:对象 用户 棱镜 WPF | 更新日期: 2023-09-27 18:35:24

我是WPF和MVVM Prism的新手。我担任 ASP.NET 开发人员已有 5 年多了,最近切换到 WPF 项目。

我目前正在将 Prism 5.0 与 Unity 一起使用。遵循该模式的主要目的是实现模块化和松散耦合。

我的问题是:我想让我的用户对象在所有模块中通用且可访问。

这就是我到目前为止所做的。启动时,用户会在登录管理器项目中看到登录屏幕 (LoginView.xaml)。然后,LoginViewModel 将验证凭据。成功验证后,LoginViewModel 会将这个检索到的对象传递给基础结构项目中的静态类。由于用户登录只是单个/通用实例,因此我在基础结构项目下创建了一个静态类来保存用户对象。

我尝试过 GenericPrincipal,虽然它确实跨视图持久化数据,但它不够复杂,无法保存我需要的数据。因此,我选择了静态课程。

有人对此有更好的建议吗?

WPF 棱镜用户对象

与其在静态类中注册用户对象,不如在 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 持久化用户凭据