Je souhaite utiliser un modèle de proxy pour la gestion de session.Meilleure méthode pour supprimer la session traitée par le modèle de proxy de session
Dans ma classe proxy de la session j'ai quelque chose comme ça:
public static class SessionProxy { private const string ThemeNameSessionName = "ThemeName"; private const string PasswordExpirationDaysSessionNam = "PasswordExpirationDays"; /// /// Gets or sets theme name. /// public static string ThemeName { get { if (Session[ThemeNameSessionName] == null) { return String.Empty; } return (string)Session[ThemeNameSessionName]; } set { Session[ThemeNameSessionName] = value; } } /// /// Gets or sets how many days to password expiration. /// public static int PasswordExpirationDays { get { return Convert.ToInt32(Session[PasswordExpirationDaysSessionNam]); } set { Session[PasswordExpirationDaysSessionNam] = value; } } }
donc je l'utilise dans mon application comme:
SessionProxy.ThemeName = "Default"; SessionProxy.PasswordExpirationDays = 5;
Avec ce morceau de code que je suis fortement mécanisme de sessions typé mais .. Comment supprimer la session sans utiliser de littéraux de chaîne (comme
Session.Remove("ThemeName")). En cas de chaînes que je peux ajouter à mes propriétés:
set { if (String.IsNullOrEmpty(value)) { Session.Remove(ThemeNameSessionName); } else { Session[ThemeNameSessionName] = value; } }
mais dans le cas d'autres types (int, long, datetime etc.) Je ne peux pas utiliser null (Je ne veux pas utiliser des types nullables).
Pouvez-vous me conseiller la meilleure solution de ce problème? Le parfait sera quelque chose comme ça, si possible:
Session.Remove([some magic here]SessionProxy.ThemeName[/magic]);
Et une chose encore, j'ai besoin dans .NET 2.0 (si Soulution pour .NET 3.5 sera également intéressant).
CraigTP, Merci beaucoup pour votre solution et vos exemples !! Cela a l'air parfait pour moi. J'utiliserai la 1ère méthode (enums) pour mon projet actuel. Merci pour vos conseils de conception, je vais ajouter à ma classe SessionProxy SessionProxy.Remove, Clear, Abandon et autres que je vais utiliser. Salutations! – binball