silnie wpisane sesje w asp.net

Przepraszam, jeśli to pytanie zostało już zadane.HttpContext.Current.Session["key"] zwraca obiekt i musielibyśmy go rzutować na ten konkretnyType zanim moglibyśmy go użyć. Przeglądałem różne implementacje sesji maszynowych

http://www.codeproject.com/KB/aspnet/typedsessionstate.aspx http://weblogs.asp.net/cstewart/archive/2008/01/09/strongly-typed-session-in-asp-net.aspx http://geekswithblogs.net/dlussier/archive/2007/12/24/117961.aspx

i czułem, że musimy dodać więcej kodu (popraw mnie, jeśli się mylę) do menedżera sesji, jeśli chcemy dodać nowyType obiektu do sesji, jako metoda lub jako oddzielny wrapper. Myślałem, że możemy użyć leków generycznych

public static class SessionManager<T> where T:class
 {
  public void SetSession(string key,object objToStore)
  {
   HttpContext.Current.Session[key] = objToStore;
  }

  public T GetSession(string key)
  {
   return HttpContext.Current.Session[key] as T;
  }

 }

Czy istnieje jakaś nieodłączna korzyść z używania

SessionManager<ClassType>.GetSession("sessionString")

niż używanie

HttpContext.Current.Session["sessionString"] as ClassType
Myślałem też, że byłoby miło mieć coś takiego

SessionManager["sessionString"] = objToStoreInSession, ale odkrył, że klasa statyczna nie może mieć indeksatora. Czy jest jakiś inny sposób na osiągnięcie tego?

Moją myślą było stworzenie obiektu SessionObject, który przechowujeType i obiekt, a następnie dodaj ten obiekt do Sesji (za pomocą menedżera sesji) z kluczem. Podczas pobierania, rzucaj wszystkie obiekty naSessionObject , pobierz typ (powiedz t) i obiekt (powiedz obj) i rzućobj tak jakt i zwróć to.

public class SessionObject { public Type type {get;set;} public Object obj{get;set;}<br>}

to również nie zadziałałoby (ponieważ podpis powrotu byłby taki sam, ale typy powrotu będą różne).

Czy istnieje inny elegancki sposób zapisywania / pobierania obiektów w sesji w bardziej bezpieczny sposób

questionAnswers(5)

yourAnswerToTheQuestion