Сохраняясь вошли в пользовательскую информацию - PullRequest
0 голосов
/ 16 сентября 2011

Я знаю, что это простая концепция, но мне нужна помощь. Я создаю приложение winforms, в C #, и я пытаюсь организовать свой код. Первый экран - это вход в систему, и после аутентификации пользователя я возвращаю данные пользователя. Как / где я должен хранить эти данные, чтобы мне не приходилось получать их снова каждый раз, когда я хочу их использовать?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

В соответствии с тем, что другие говорили о глобальном статическом классе, но с некоторым примером кода:

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; }
    }
}

Итак, после того, как пользователь вошел в систему, сохраните информацию о зарегистрированном:

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

Когда вам нужно получить информацию:

UserInfo userInfo = GlobalInfo.CurrentUser;
1 голос
/ 16 сентября 2011

Вы можете создать глобальный статический класс в ответ на этот вопрос или посмотреть на Singleton Pattern реализацию

... или прочитайте этот вопрос «Подход с использованием глобальных переменных в приложении C # Windows Forms?

0 голосов
/ 16 сентября 2011

Я бы пошел с одиночкой, как говорит @brodie, но реализован как экземпляр объекта пользовательских данных, помещенного в DI-контейнер.Например, Ninject поддерживает привязку к экземпляру через BindToConstant.Таким образом, ваш экземпляр LoggedInUser (данные о вошедшем в систему пользователе) будет создан при входе пользователя в систему, а затем Bind<LoggedInUser>.ToConstant(myLoggedInUser) (из памяти).Затем, если вам нужно получить зарегистрированного пользователя, вы просто извлечете текущий экземпляр из контейнера DI (через что-то вроде kernel.Get<LoggedInUser>()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...