Feedback

C# - Sessionverwaltung einmal anders

Veröffentlicht von am 15.11.2009
(2 Bewertungen)
Dieses Snippet zeigt, wie man mit Hilfe einer Enumeration Sessionobjekte organisieren und verwalten kann. Zusätzlich sind die Objekte Page.Session und System.Web.SessionState.HttpSessionState mit Hilfe von Extension Methods erweitert worden, so dass ich innerhalb einer Anwendung in allen Bereichen die Enumeration der Sessionkeys verwenden kann.
Eine detailierte Beschreibung findet sich auch in meinem Weblog: http://weblog.drescher-hackel.de/8DD51D74-573E-4D03-AAB9-B83578DD94D3/Session+einmal+anders+verwalten.content.aspx

Die Aufrufe sind dann recht überschaubar und verständlich:

AppSession.Set(SessionKey.Benutzer, "Rene");
AppSession.Get(SessionKey.Benutzer);
AppSession.Remove(SessionKey.Benutzer);
// oder
Session.Add(SessionKey.Benutzer, "Rene");
Session.Set(SessionKey.Benutzer, "Rene");
Session.Get(SessionKey.Benutzer);
Session.Remove(SessionKey.Benutzer);
// oder
SessionKey.Benutzer.Set("Rene");
SessionKey.Benutzer.Get();
SessionKey.Benutzer.Remove();
using System.Web;
namespace www.drescher.hackel.de.SessionApp
{
    /// <summary>
    /// Enum zum Verwalten der SessionKeys
    /// </summary>
    public enum SessionKey
    {
        Benutzer
    }

    /// <summary>
    /// Statische Klasse zum Verwalten der Session
    /// </summary>
    public static class AppSession
    {
        /// <summary>
        /// Gibt die Session mit den übergebenen SessionKey als Key zurück
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static object Get(SessionKey name)
        {
            return HttpContext.Current.Session[name.ToString()];
        }

        /// <summary>
        /// Setzt die Session mit dem übergebenen SessionKey als Key
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <param name="value">object</param>
        public static void Set(SessionKey name, object value)
        {
            HttpContext.Current.Session[name.ToString()] = value;
        }

        /// <summary>
        /// Entfernt die Session entsprechend dem übergebenen SessionKey
        /// </summary>
        /// <param name="name">SessionKey</param>
        public static void Remove(SessionKey name)
        {
            HttpContext.Current.Session.Remove(name.ToString());
        }
    }

    /// <summary>
    /// Statische Klasse für Erweiterungsmethoden
    /// </summary>
    public static class ExtendSession
    {
        #region Extends System.Web.SessionState.HttpSessionState
        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, um den Wert der Session entsprechend des übergebenen SessionKey zu ermitteln
        /// </summary>
        /// <param name="session">System.Web.SessionState.HttpSessionState</param>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static object Get(this System.Web.SessionState.HttpSessionState session, 
            SessionKey name)
        {
            return AppSession.Get(name);
        }

        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, um den Wert der Session entsprechend des übergebenen SessionKey zu setzen
        /// </summary>
        /// <param name="session">System.Web.SessionState.HttpSessionState</param>
        /// <param name="name">SessionKey</param>
        /// <param name="value">object</param>
        public static void Set(this System.Web.SessionState.HttpSessionState session, 
            SessionKey name, object value)
        {
            AppSession.Set(name, value);
        }

        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, um den Wert der Session entsprechend des übergebenen SessionKey zu ermitteln
        /// Überschreibt dabei die bestehende Add-Methode
        /// </summary>
        /// <param name="session">System.Web.SessionState.HttpSessionState</param>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static void Add(this System.Web.SessionState.HttpSessionState session, 
            SessionKey name, object value)
        {
            AppSession.Set(name, value);
        }

        /// <summary>
        /// Erweitert System.Web.SessionState.HttpSessionState, zum Entfernen der Session entsprechend dem übergebenen SessionKey
        /// </summary>
        /// <param name="name">SessionKey</param>
        public static void Remove(this System.Web.SessionState.HttpSessionState session,
            SessionKey name)
        {
            AppSession.Remove(name);
        } 
        #endregion

        #region Extends SessionKey
        /// <summary>
        /// Erweiterterung des Enums SessionKey zum Abrufen des Sessionswertes entsprechend des selektierten SessionKeys
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <returns>object</returns>
        public static object Get(this SessionKey name)
        {
            return AppSession.Get(name);
        }

        /// <summary>
        /// Erweiterterung des Enums SessionKey zum Setzen des Sessionswertes entsprechend des selektierten SessionKeys
        /// </summary>
        /// <param name="name">SessionKey</param>
        /// <param name="value">object</param>
        public static void Set(this  SessionKey name, object value)
        {
            AppSession.Set(name, value);
        }

        /// <summary>
        /// Erweiterterung des Enums SessionKey zum Entfernen der Session entsprechend dem übergebenen SessionKey
        /// </summary>
        /// <param name="name">SessionKey</param>
        public static void Remove(this  SessionKey name)
        {
            AppSession.Remove(name);
        } 
        #endregion
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!