我是 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/