stark typisierte Sessions in asp.net

Entschuldigen Sie, wenn diese Frage bereits gestellt wurde.HttpContext.Current.Session["key"] Gibt ein Objekt zurück, und wir müssten es auf dieses Objekt umwandelnType bevor wir es benutzen konnten. Ich habe mir verschiedene Implementierungen von typisierten Sessions angesehen

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

und ich hatte das Gefühl, dass wir dem SessionManager etwas mehr Code hinzufügen müssen (korrigieren Sie mich, wenn ich falsch lag), wenn wir einen neuen hinzufügen möchtenType des Objekts in die Sitzung, entweder als Methode oder als separater Wrapper. Ich dachte, wir könnten Generika gebrauchen

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;
  }

 }

Gibt es einen inhärenten Vorteil bei der Verwendung

SessionManager<ClassType>.GetSession("sessionString")

als mit

HttpContext.Current.Session["sessionString"] as ClassType
Ich dachte auch, dass es schön wäre, so etwas zu haben

SessionManager["sessionString"] = objToStoreInSession, stellte jedoch fest, dass eine statische Klasse keinen Indexer haben kann. Gibt es eine andere Möglichkeit, dies zu erreichen?

Mein Gedanke war, ein SessionObject zu erstellen, in dem das gespeichert wirdType und das Objekt, und fügen Sie dieses Objekt dann mit dem Schlüssel zu Sitzung hinzu (mithilfe eines Sitzungsmanagers). Wirken Sie beim Abrufen alle Objekte inSessionObject , nimm den Typ (sag t) und das Objekt (sag obj) und wirkeobj wiet und gib es zurück.

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

Dies würde nicht so gut funktionieren (da die Rückgabesignatur dieselbe wäre, die Rückgabetypen jedoch unterschiedlich sind).

Gibt es eine andere elegante Möglichkeit, Objekte in einer Sitzung typsicherer zu speichern / abzurufen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage