Как я могу удалить общие переменные из старого кода - PullRequest
3 голосов
/ 23 марта 2012

В системе есть синглтон для текущего зарегистрированного пользователя (наш собственный пользователь, а не пользователь Windows), содержащий общий экземпляр.

В нескольких сотнях файлов классов доступа к данным это используется для установки CreatebyID и EditbyID для каждого запроса, отправляемого в базу данных.Почти все классы наследуют одну базу, хотя на данный момент в каждом классе установлены два значения.

Все это отлично работало для настольных приложений компаний в течение многих лет, однако когда одни и те же классы доступа к данным использовались вВ новом веб-приложении зарегистрированный в данный момент пользователь был разделен между всеми сеансами пользователей и не мог быть изменен без проблем.

Как я могу выполнить рефакторинг кода без значительной перезаписи всего DAL и без передачи текущего пользователяили идентификатор пользователя) в каждом экземпляре или установка свойства EditbyID для каждого класса для каждого сохранения.

1 Ответ

1 голос
/ 23 марта 2012

Вы можете использовать статическое свойство, которое получает / устанавливает переменную Session через HttpContext.Current.Session.

Например:

public class DAL
{
    public static int CreatebyID
    {
        get
        {
            return (int)HttpContext.Current.Session["CreatebyID"];
        }
        set
        {
            HttpContext.Current.Session["CreatebyID"] = value;
        }
    }
    public static int EditbyID
    {
        get
        {
            return (int)HttpContext.Current.Session["EditbyID"];
        }
        set
        {
            HttpContext.Current.Session["EditbyID"] = value;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...