Introduction
It has been known to happen that, values strored in the Session
object can become numerous enough to be unwieldy, ambiguous and often developers will just plain forget what they have stored there. Recently I decided to simplify the matter for myself and began to use an object that I named a SessionSink and placed all session values in the sink object rather than having (n) number of variables making for clutter and difficulty in management. By using the SessionSink we can encapsulate all Session values into one object stored in the Session
object. Furthermore we are able to use all the encapsulation practices afforded to us by wrapping it all up in one single user defined class.
The code below is an example of one such SessionSink and can be referred to in code as per the following code snippet:
private void someMethod()
{
((SessionSink)(Session["SessionSink"])).GetSetSiteLocationId = 1;
}
Making sure you cast the sink object will give you access to all it�s publicly exposed members. You can initialise the sink in the global.asax Session_Start
event method like this:
protected void Session_Start(Object sender, EventArgs e)
{
Session["SessionSink"] = new SessionSink();
}
Here is the example SessionSink
using System;
using System.Data.SqlClient;
namespace MySessionSink
{
public class SessionSink
{
private bool init;
private string user;
private string pwd;
private int CoLocationId;
private int SiteLocationId;
private string SlaDepot;
private int SlaDepotDistance;
private int RegionRadiusId;
private string pCode;
public SessionSink()
{
this.init = true;
}
public void Refresh()
{
this.pCode = "";
this.RegionRadiusId = 0;
this.SlaDepotDistance = 0;
this.SlaDepot = "";
this.SiteLocationId = 0;
this.CoLocationId = 0;
this.AddUpdateSite = false;
this.AddUpdateCompany = false;
this.init = false;
}
public string GetSetPassword
{
get
{
return this.pwd;
}
set
{
this.pwd = value;
}
}
public string GetSetUserName
{
get
{
return this.user;
}
set
{
this.user = value;
}
}
public string GetSetPcode
{
get
{
return this.pCode;
}
set
{
this.pCode = value;
}
}
public int GetSetRegionRadiusId
{
get
{
return this.RegionRadiusId;
}
set
{
this.RegionRadiusId = value;
}
}
public int GetSetDepotDistance
{
get
{
return this.SlaDepotDistance;
}
set
{
this.SlaDepotDistance = value;
}
}
public string GetSetRepairDepot
{
get
{
return this.SlaDepot;
}
set
{
this.SlaDepot = value;
}
}
public int GetSetSiteLocationId
{
get
{
return this.SiteLocationId;
}
set
{
this.SiteLocationId = value;
}
}
public int GetSetCoLocationId
{
get
{
return this.CoLocationId;
}
set
{
this.CoLocationId = value;
}
}
public bool initStatus
{
get
{
return this.init;
}
}
}
}