【发布时间】:2011-05-06 09:57:23
【问题描述】:
我正在开发员工管理系统。每个员工属于一个部门,当员工登录系统时,我将 UserId 和 DepartmentId 存储在我的班级中,如下所示
internal static class MyStaticData
{
internal static Guid UserId { get; set; }
internal static Guid DepartmentId { get; set; }
}
当用户创建离开申请页面并点击保存按钮时,我需要将 UserId 和 DepartmentId 都发送到数据库中,那么将 UserId 和 DepartmentId 发送到此页面之间的正确方法是什么
// Create instance property inside the class and assign it when create new object.
public class LeavePage
{
public Guid UserId { get; set; }
public Guid DepartmentId { get; set; }
}
var leavePage = new LeavePage { UserId = MyStaticData.UserId, DepartmentId = MyStaticData.DepartmentId };
或
// Don't have instance property inside the class but use MyStaticData directly
public class LeavePage
{
public void Save()
{
Db.Save(data, ..., MySataicData.UserId, MyStaticData.DepartmentId);
}
}
我不确定哪个更好(耦合更少)还是有更好的方法来做到这一点?
【问题讨论】:
-
你说的是“离开页面”。您正在开发 Web 应用程序吗?那么静态用户数据是个坏主意。
-
您是否将静态对象类成员与常量实例成员混淆了?静态成员在类的所有实例之间共享。您可能希望对 UserId 和 DepartmentId 使用私有 const,因为它们在用户之间是可变的。
-
@DanielB:这是窗口应用程序。
-
@DanielB:为什么静态用户数据是个坏主意?
-
@Akram Shahda:在 Web 应用程序 (asp.net) 中,静态变量在应用程序之间共享并且没有请求范围,因此每个用户都将使用自己的数据覆盖其他人的静态变量。