c# - WPF Prism 用户对象

标签 c# wpf mvvm persistence prism

我是 WPF 和 MVVM Prism 的新手。我从事 ASP.NET 开发人员已有 5 年多了,最近转向 WPF 项目。

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

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

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

我尝试过 GenericPrincipal,虽然它确实跨 View 保留数据,但它不够复杂,无法保存我需要的数据。因此我选择了静态类。

有人有更好的建议吗?

最佳答案

我建议您不要在静态类中注册 User 对象,而是在 Unity 容器本身中注册 User 实例。

在您的LoginViewModel中,您应该获得IUnityContainer类的实例。

public LoginViewModel(IUnityContainer container)
{
    Container = container;
}

在您的登录方法中,您注册您的用户对象:

private void Login(object obj)
{
    ...
    if (user.Authenticated)
    {
        Container.RegisterInstance("CurrentUser", user); 
    }
    ...
}

要访问您的对象,请使用以下代码片段:

Container.Resolve<YourUserClassHere>("CurrentUser");

更多详情请参阅: Persisting user credentials in WPF w/Unity and MVVM

关于c# - WPF Prism 用户对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677713/

相关文章:

c# - 如何在一个 VSTO Word 插件中部署 C# 代码和 VBA 脚本

wpf - 在 WPF 中重新创建 WinForms 布局

c# - assembly 中的类型是使用旧版本的 blend sdk 构建的,在 Windows presentation Foundation 4 项目中不受支持

wpf - WPF如何设置contentcontrol的数据模板?

wpf - 如何在 wpf 中使用 MVVM 处理 ComboBox 的 SelectionChanged 事件?

c# - 使用相同的 XML 注释记录重载方法

c# - "does not contain a static ' 主要 ' method suitable for an entry point"

c# - 从 C# 读取 Azure Blob 存储中的文件

c# - 将项目添加到模型 C# wpf 时更新可观察集合

c# - 在WPF中从后面的代码中删除代码