HttpContext как объект - PullRequest
       9

HttpContext как объект

0 голосов
/ 13 января 2011

Мне нравится, как работает HTTPContext.Current.Есть ли способ, которым я могу реализовать подобный объект, который не имеет отношения к HTTPContextBase?В принципе, я хотел бы создать UserContext.Затем в DAL, я мог бы просто запросить этот UserContext для специфичной для пользователя информации.Этот объект должен быть поточно-ориентированным и работать как в среде ASP.NET (поэтому атрибут THREAD STATIC не будет работать), так и в консольных / библиотечных средах.

1 Ответ

2 голосов
/ 13 января 2011

HttpContext.Current - это синглтон. Потокобезопасная реализация выглядит так:

using System;

public sealed class Singleton
{
   private static volatile Singleton instance;
   private static object syncRoot = new Object();

   private Singleton() {}

   public static Singleton Current
   {
      get 
      {
         if (instance == null) 
         {
            lock (syncRoot) 
            {
               if (instance == null) 
                  instance = new Singleton();
            }
         }

         return instance;
      }
   }
}

Однако использование шаблона Singleton не очень хорошая идея. Это почти «анти-паттерн». Это затрудняет юнит-тестирование. Вместо этого лучше использовать Dependency Injection Container. http://en.wikipedia.org/wiki/Dependency_injection

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