2011-09-16 2 views
0

Je sais que c'est un concept simple, mais j'ai besoin d'aide. Je crée une application winforms, en C#, et j'essaie d'organiser mon code. Le premier écran est une connexion, et une fois que l'utilisateur est authentifié, je retourne les détails des utilisateurs. Comment/où dois-je stocker ces informations pour ne pas avoir à les récupérer chaque fois que je veux les utiliser?Informations persistantes sur l'utilisateur enregistrées

Merci!

Répondre

1

Le long des lignes de ce que les autres ont dit au sujet de la classe mondiale statique, mais avec un exemple de code:

public class UserInfo 
{ 
    private int userID; 

    public int UserID 
    { 
     get { return userID; } 
    } 

    private string userName; 

    public string UserName 
    { 
     get { return userName; } 
    } 

    public UserInfo(int userID, string userName) 
    { 
     this.userID = userID; 
     this.userName = userName; 
    } 
} 

public static class GlobalInfo 
{ 
    private static UserInfo currentUser; 

    public static UserInfo CurrentUser 
    { 
     get { return currentUser; } 
     set { currentUser = value; } 
    } 
} 

Ainsi, après que l'utilisateur a ouvert une session, enregistrez le connecté info:

GlobalInfo.CurrentUser = new UserInfo(123, "Bob Jones"); 

Lorsque vous devez chercher info:

UserInfo userInfo = GlobalInfo.CurrentUser; 
0

J'irais avec un singleton comme le dit @brodie, mais implémenté comme une instance de l'objet détails de l'utilisateur poussé dans un conteneur DI. Par exemple, Ninject prend en charge binding to a instance via BindToConstant. Donc, vous auriez votre instance LoggedInUser (détails de l'utilisateur connecté) créée lorsque l'utilisateur se connecte, puis Bind<LoggedInUser>.ToConstant(myLoggedInUser) (à partir de la mémoire). Ensuite, si vous avez besoin de l'utilisateur connecté, vous devez simplement extraire l'instance actuelle du conteneur DI (via quelque chose comme kernel.Get<LoggedInUser>()).

Questions connexes