Доступ к пользовательскому контексту из библиотеки классов - PullRequest
0 голосов
/ 28 апреля 2009

Справочная информация:

  • У меня есть приложение win, веб-приложение и общая библиотека классов.
  • В моем классе lib у меня есть статический методы для запросов SQL, которые поднимают Моя строка подключения SQL
  • Я храню строку подключения SQL в Переменная сеанса, так как она установлена ​​в войти во время, где это определяется какую базу данных использовать.
  • Мой класс lib не может получить доступ к моей сессии переменные (да, конечно, я могу использовать HttpContext.Current ..., но это не так работа в моем winapp)

Решение

Я представляю своего рода решение, в котором у меня есть класс для моего текущего пользователя / контекста, и при его создании я внедряю предпочтительное поведение, что-то вроде этого:

UserContex current = new UserContext();
current.SessionHandler = new AspNetSessionHandler();

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

Я попытаюсь вызвать в воображении подобные вещи, но было бы замечательно, если бы я нашел уже работающее решение, и поэтому я призываю общее коллективное безумие вас, ребята

1 Ответ

1 голос
/ 29 апреля 2009

Csla содержит аналогичную настройку с использованием статического класса ApplicationContext, который обсуждается в книге Рокфорда Лотки «Экспертные бизнес-объекты C #» ... Для решения проблемы со строкой соединения я бы предложил создать класс DataConnection, который возвращает статическую строку соединения из конфигурации таким образом, не имеет значения, идет ли строка подключения из файла Web.config или App.config

public class DataConnection
{


    public static string NameOfConnection
    {
        get
        {
            return ConfigurationManager.ConnectionStrings["NameOfConnection"].ConnectionString;
        }
    }
}
...