В веб-приложениях информация для входа пользователя обычно хранится в сеансе, но как насчет приложений Windows? Правильно ли использовать синглтон? Должен ли я просто использовать статическое свойство?
Допустим, я храню информацию для входа в статическое свойство ApplicationController. LoggedInUser. Когда пользователь успешно входит в систему, это свойство устанавливается. Перед успешным входом в систему LoggedInUser возвращает ноль. Затем при вызове примера OrdersService из моего класса OrderListPresenter я использую LoggedInUser в качестве параметра.
var service = new OrdersService();
var orderCollection = service.GetOrdersByUserID(
ApplicationController.LoggedInUser.ID);
Хорошо, это работает, но также затрудняет написание модульных тестов. Мне не нравится работать с одиночными / статическими членами из моих модульных тестов.
Может быть, я мог бы добавить ApplicationController в каждый класс, к которому требуется доступ вошедшему в систему пользователю? Любые другие идеи?
Какой, по вашему мнению, лучший способ справиться с этим?