【发布时间】:2009-08-11 07:10:33
【问题描述】:
我知道这一定是一个古老而疲惫的问题,但我似乎无法通过我可信赖的朋友(又名 Google)找到任何东西。
我有一个 .net 3.5 c# winforms 应用程序,它在应用程序启动时向用户显示登录表单。成功登录后,我想跑到数据库,拉入一些特定于用户的数据并将它们(在属性中)保存在一个名为 AppCurrentUser.cs 的类中,这样就可以在所有用户中访问程序集中的类 - 这里的目的是我可以使用一次性读取的数据填充一些属性,而不是每次需要时都调用数据库。在 web 应用程序中,我通常会使用 Session 变量,我知道 WinForms 中不存在这种概念。
类结构如下所示:
public class AppCurrentUser {
public AppCurrentUser() { }
public Guid UserName { get; set; }
public List<string> Roles { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
}
现在,我有一些选项需要专家建议:
作为一个“哑”类,我应该使属性成为非静态的,实例化该类,然后设置属性...但是我将只能从创建它的类中访问该实例对吧?
从逻辑上讲,我认为这些属性应该是静态的,因为我只会在整个应用程序中使用类一次(并且不会创建它的新实例),并且它的属性值将在应用程序关闭时“重置”。 (如果我创建它的一个实例,我可以在应用程序关闭时处理它)
我应该如何构建我的类以及如何在我的程序集中的所有类中访问它的属性?我真的很感谢您对此的诚实和有价值的建议!
谢谢!
【问题讨论】:
标签: winforms singleton global-variables