Лучший способ сделать ASP.NET со строгим контролем типов сессии MVC

Ответ Kieron является лучшим до сих пор. Если у Вас есть проблемы, потому что первая программа буферизует, можно использовать освобождать буфер программу:

unbuffer  | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }'

Это установлено по умолчанию в большинстве систем Linux. Если необходимо создать его сами, это - часть ожидать пакета

http://expect.nist.gov

20
задан David Pfeffer 10 November 2009 в 20:14
поделиться

1 ответ

Таким образом, другие объекты не будут иметь доступа к этому объекту (например, ActionFilter). Я делаю это так:

public interface IUserDataStorage<T>
{
   T Access { get; set; }
}

public class HttpUserDataStorage<T>: IUserDataStorage<T>
  where T : class
{
  public T Access
  {
     get { return HttpContext.Current.Session[typeof(T).FullName] as T; }
     set { HttpContext.Current.Session[typeof(T).FullName] = value; }
  }
}

Затем я могу либо ввести IUserDataStorage в конструктор контроллера, либо использовать ServiceLocator.Current.GetInstance (typeof (IUserDataStorage )) внутри ActionFilter.

public class MyController: Controller
{
   // automatically passed by IoC container
   public MyController(IUserDataStorage<MyObject> objectData)
   {
   }
}

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

18
ответ дан 30 November 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: