在另一个位置访问相同的对象值

时间:2016-08-13 04:44:02

标签: c# visual-studio object-oriented-analysis

我有一个简单的C#登录系统(Winform应用程序)。我有一个单独的类(ActiveUser)来存储用户登录时的详细信息。

ActiveUser课程中,我有一个名为loggedInUserID的变量。

因此,当用户登录时,在登录表单上,我为该变量设置了一个值。

ActiveUser obj = new ActiveUser();
obj.setLoggedUserID(UserID);

现在我在每个表单中都有一个CheckLoggedIn()方法,用于检查用户是否已登录。因此,我可以阻止用户访问未经授权的页面。

那么,如何检查呢?如果我这样做,它只是另一个对象。

CheckLoggedIn(){

    ActiveUser obj = new ActiveUser();

    if(obj.getLoggedUserID() != 0){
        MessageBox.Show("Logged In");
    }
}

那么,如何检查用户登录时创建的对象值?

1 个答案:

答案 0 :(得分:1)

我认为 Singleton Pattern 在这种情况下是最合适的。

ActiveUser成为一个简单的单例类。

ActiveUser课程中,添加以下内容:

public static readonly ActiveUser User = new ActiveUser();

SetLoggedUserID,请执行以下操作:

ActiveUser.User.SetLoggedUser(...);

你可以这样检查:

void CheckLoggedIn(){

    if(ActiveUser.User.getLoggedUserID() != 0){
        MessageBox.Show("Logged In");
    }
}

为避免意外创建ActiveUser的新实例,我建议您将构造函数设为私有:

private ActiveUser() { ... }