2016-08-13 3 views
0

У меня есть простая система регистрации 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

Я думаю, что 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() { ... } 
+0

Спасибо, но как установить целочисленное значение переменной 'User'? В нем говорится: «Невозможно неявно преобразовать ...» – TharinduLucky

+0

@TharinduLucky Вы, кажется, исходите из фона js. К сожалению, вы не можете установить ничего, кроме экземпляров ActiveUser' для пользователя. C# использует в основном статическую типизацию. И здесь не удобно использовать ключевое слово 'dynamic'. Что ты пытаешься сделать? Я чувствую XY-проблему. – Sweeper

+0

Да, я знаю немного JS. То, что я пытаюсь сделать, - на странице ведения журнала, мне нужно установить идентификатор пользователя '' переменной 'User' в классе ActiveUser. Поскольку доступ к классу можно найти в любом месте программы, я могу проверить, вошел ли пользователь в систему или нет. – TharinduLucky

Смежные вопросы