我想將會話改爲靜態類型 - 我只是很討厭打字符串,因爲我有很多很多錯誤。在ASP.NET中更改默認會話提供程序
我使用了什麼技術? ASP.NET MVC通過EXT.NET MVC
我試圖做到這一點使用web.config但問題是,添加會話狀態後,視覺是不會編譯我的代碼,因爲該會話應該使用字符串作爲關鍵。
我想通過枚舉如使用會話:
public enum SessionEnum{Model}
public class Bar{
void foo(){
Session[SessionEnum.Model] = "blah";
}
}
我知道我可以創建包裝轉換枚舉爲字符串,但它不是非常令人滿意的解決方案給我。
public class StorageWrapper{
public object this[SessionEnum enum]{ get{return Session[enum.toString()]}; //+set
}
我所做的就是創建一個基類的靜態對象爲我所有的控制器,然後我能碰到他們,但關閉和打開網頁後,用它我又無法從中獲得價值。我想我應該序列化他們,但我不知道如何。
有沒有辦法做到這一點?
編輯 我的會話現在看起來是這樣的:
[Serializable]
public abstract class DataWrapper<T> : HttpSessionStateBase
{
Dictionary<T, object> Dictionary { get; set; } = new Dictionary<T, object>();
public object this[T a]
{
get
{
try
{
return Dictionary[a];
}
catch
{
return null;
}
}
set { Dictionary[a] = value; }
}
}
[Serializable]
public class SessionWrapper : DataWrapper<SessionNames>
{}
public enum SessionNames { Model, Login, LastOpenedFile }