我想使用代理模式進行會話處理。刪除會話處理會話代理模式的最佳方法
在我的會話代理類我有類似的東西:
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; } } }
,所以我用它在我的應用程序爲:
SessionProxy.ThemeName = "Default"; SessionProxy.PasswordExpirationDays = 5;
隨着這段代碼我應該使用強類型的會話機制,但..如何刪除會話而不使用字符串文字(如
Session.Remove("ThemeName"))。 在字符串的情況下,我可以添加到我的屬性:
set { if (String.IsNullOrEmpty(value)) { Session.Remove(ThemeNameSessionName); } else { Session[ThemeNameSessionName] = value; } }
,但在其他類型的情況下(INT,長,日期時間等),我不能使用空(我不想用可空類型)。
你能告訴我這個問題的最佳解決方案嗎? 完美的人會是這樣的,如果可能的:
Session.Remove([some magic here]SessionProxy.ThemeName[/magic]);
還有一件事呢,我需要它在.NET 2.0(雖然soulution用於.NET 3.5也將是很有意思)。
CraigTP,非常感謝您的解答和例子!它看起來非常適合我。我將爲我當前的項目使用第一種方法(枚舉)。感謝您的設計建議,我將添加到SessionProxy類SessionProxy.Remove,Clear,Abandon和其他我將使用的類。問候! – binball 2009-10-09 09:51:04