2016-08-13 63 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類,添加如下內容:

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

謝謝,但如何設置一個整型值爲'用戶'變量?它說「不能隱式轉換...」 – TharinduLucky

+0

@TharinduLucky你似乎來自js背景。不幸的是,你不能將'ActiveUser'實例設置爲'User'。 C#主要使用靜態類型。這裏不適合使用'dynamic'關鍵字。你想做什麼?我聞到一個XY問題。 – Sweeper

+0

是的,我知道一點JS。我想要做的是在日誌頁面中,我需要將用戶ID設置爲ActiveUser類中的User變量。由於課程可以在程序中的任何地方訪問,我可以檢查用戶是否已登錄 – TharinduLucky

相關問題