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

이 경우에는 싱글 톤 패턴이 가장 적합하다고 생각합니다.

ActiveUser을 간단한 싱글 톤 클래스로 만들어 보겠습니다. ActiveUser 클래스에서

이 같은 것을 추가

ActiveUser.User.SetLoggedUser(...); 

그리고이처럼 확인할 수 있습니다 :

public static readonly ActiveUser User = new ActiveUser(); 

SetLoggedUserID에 바로 할 수

void CheckLoggedIn(){ 

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

을 실수로 ActiveUser의 새 인스턴스를 만들지 않도록하십시오. 당신은 생성자를 비공개로 만들 수 있습니다 :

private ActiveUser() { ... } 
+0

감사합니다. 그러나 정수 값을'User' 변수로 설정하는 방법은 무엇입니까? 그것은 "암묵적으로 변환 할 수 없습니다 ..."라고 말합니다. – TharinduLucky

+0

@ TharinduLucky 당신은 js 배경에서 온 것처럼 보입니다. 안타깝게도'ActiveUser' 인스턴스 이외의 것은 'User'로 설정할 수 없습니다. C#은 주로 정적 유형 지정을 사용합니다. 그리고 여기서'dynamic' 키워드를 사용하는 것은 적합하지 않습니다. 너 뭐하려고? 나는 XY 문제의 냄새가 난다. – Sweeper

+0

그래, 나는 조금 JS 알아. 내가 뭘 하려는지, 로깅 페이지에서, 사용자'ID'를 ActiveUser 클래스의'User' 변수로 설정해야합니다. 클래스가 프로그램의 어디에서나 액세스 할 수 있기 때문에 사용자가 로그인했는지 여부를 확인할 수 있습니다. – TharinduLucky

관련 문제