在静态类中存储用户信息

本文关键字:用户 信息 存储 静态类 | 更新日期: 2023-09-27 18:20:15

假设我们希望在用户登录到应用程序后保留用户信息,以便在多个类上共享其数据,那么最好的方法是什么。

通常,我在静态类中用一个属性保存这样的东西:

public User CurrentUser { get; set; }

你的想法是什么?

提前谢谢。

在静态类中存储用户信息

在WPF:假设您有一个名为UserInfo的类,它包含有关当前登录用户的所有信息:

// You can use your Application.Current.Resources dictionary to store the
// current logged-in user info.
Application.Current.Resources["UserInfo"] = userInfo;

然后,您可以使用以下代码在应用程序中的任何位置检索当前用户信息对象:

var userInfo = Application.Current.Resources["UserInfo"] as UserInfo;

您的建议是将用户信息存储在一个单例中。这是一种众所周知的模式,在桌面应用程序中非常常用。还有很多与单身模式有关的污名,由于一些缺点,它通常不受欢迎:

  • 可测试性,如果您有一个未通过接口公开的单例,则不可能(或很容易)测试您的代码
  • 可伸缩性,单例永远是单例,所以你不能分担这个责任在多个实例之间,以允许您的应用程序扩展。这通常只是服务器端应用程序中的一个问题。在桌面上,这真的不适用
  • 并发性,是否有多个线程访问您的单例?如果是这样,您需要确保线程安全

在桌面应用程序的上下文中,上述问题中唯一可能出现的是第一个问题,即可测试性。在这种情况下,只需定义一个IUser接口就可以了。

总之,是的,这很好。我自己过去也用过很多次这种模式。