在静态类中存储用户信息

时间:2012-01-15 05:49:33

标签: c# .net wpf winforms silverlight

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

通常我会在静态类中使用属​​性保存这样的内容:

public User CurrentUser { get; set; }

你的想法是什么?

提前致谢。

2 个答案:

答案 0 :(得分:3)

在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;

答案 1 :(得分:3)

您建议将用户信息存储在singleton中。这是一种众所周知的模式,在桌面应用程序中非常常用。单身模式也有很多耻辱,由于一些缺点,它常常令人不悦:

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

在桌面应用程序的上下文中,上面唯一可能存在问题的是第一个可测试性。在这种情况下,只需定义一个IUser界面即可。

总之,是的,这很好。我过去曾多次使用过这种模式。

相关问题