אחד מהדברים שאני לא אוהב בעבודה עם Session זה העובדה שאחנו עובדים איתו עם מחרוזות.
בפרוייקטים בינוניים פתאום מתחילים לשכוח עם איזה שם השתמשנו והאם השתמשנו בשם מסויים, והעניינים מתחילים להסתבך.
ידיד יקר שי קרן כתב class בשם SessionManager שפותר את הבעיות האלו, מכיוון שהשימוש ב - Session הוא בעזרת enum.
אפשר להוריד את הקוד
מכאן (אני משתמש בו כבר שנתיים בכל הפרוייקטים שלי)
זה עובד בצורה הבאה. (אני מציג כאן רק חלק מהקוד - הקוד המלא ניתן להורדה מהלינק למעלה)
יש enum עם כל השמות שנרצה להשתמש ב - Session (בכל פעם שנרצה להוסיך משהו חדש - נוסיף תחילה ל - enum)
public enum SessionParam
{
User,
Entities,
LastException,
Info
}
המחלקה SessionManager ממומשת עם Singelton
public sealed class SessionManager
{
public static SessionManager Session
{
get
{
if (m_Instance == null)
{
lock (m_ObjLocker)
{
if (m_Instance == null)
{
m_Instance = new SessionManager();
}
}
}
return m_Instance;
}
}
בנוסף יש לו שני indexers
public object this[SessionParam sessionParam]
public object this[string name]
יש גם עם string עבור מצבים שאין ברירה אלא לעבוד עם מחרוזת ואי אפשר להגדיר מראש.
כעת העבודה מול ה - Session תהיה כך
SessionManager.Session[SessionParam.LoginUser] = new User();
מה שיגרום לכך - שנוכל לעשות Find All Reference על מופע של enum ולמצוא איפה משתמשים בזה מבלי לעשות חיפושים על מחרוזות.
תהנו