在OOP中使用静态变量的正确方法是什么?

时间:2011-05-06 09:57:23

标签: c# oop

我正在研究员工管理系统。每个员工属于一个部门,当员工登录系统时,我在我的班级存储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);
    }
}

我不确定哪一个更好(耦合更少),还是有更好的方法呢?

2 个答案:

答案 0 :(得分:2)

你可能想尝试使用一些更通用的类的静态实例 - 如下所示:

public class User
{
    public Guid Id { get; set; }
    public Guid DepartmentId { get; set; }
}

public static class SessionContext
{
    public static User CurrentUser { get; set; }
}

然后在保存时使用SessionContext.CurrentUser。

当然,在这种情况下,使用静态类可能不合适,您应该查看特定于会话的实例。

答案 1 :(得分:0)

如果您的课程中不需要包含您的值的实例,请不要这样做。

相关问题