2012-07-03 3 views
1

클래스 인스턴스 인 세션 변수가 있습니다. 나는 Global.asax에 선언 :언제든지 세션 변수를 유형으로 변환하지 않고 참조하십시오.

void Session_Start(object sender, EventArgs e) 
{ 
    // Code that runs when a new session is started 
    Session["SiteVariables"] = new SiteVariables(); 

} 

가 지금은하지만, 지금까지 내가 이해, 내가 이런 식으로해야 할 내 솔루션의 여러 장소에서이 변수의 멤버 중 일부를 참조해야합니다

SiteVariables objSiteVariables = (SiteVariables)Session["SiteVariables"]; 
Label1.Text = objSiteVariables.permiss; 

방법이 있는지 궁금합니다. 예 : 어딘가에 고정 변수 또는 뭔가 설정, 그저 할 수 있습니다 :

Label1.Text = objSiteVariables.permiss; 

내 프로젝트의 모든 장소에서.

감사합니다.

답변

3

유형/방법 helper을 직접 만들 수도 있습니다.

public class SessionHandler 
{ 
    public static SessionHandler CurrentSession 
    { 
     get 
     { 
      SessionHandler session = 
       (SessionHandler)HttpContext.Current.Session["SessionId"]; 
      if (session == null) 
      { 
       session = new SessionHandler(); 
       HttpContext.Current.Session["SessionId"] = session; 
      } 
      return session; 
     } 
    } 

    public SiteVariables SiteVariables { get; set; } 
} 

당신은 다음과 같이 사용할 수 있습니다 :

public class Util 
{ 
    public static SiteVariables Variables 
    { 
     get 
     { 
      return HttpContext.Current.Session["SiteVariables"] as SiteVariables; 
     } 
    } 
} 

그리고

Label1.Text=Util.Variables.permiss; 
0

에 할당 값이 같은 유형의 안전한 액세스를 허용 세션에 대한 래퍼를 만들 수 있습니다 :

// assign 
SessionHandler.CurrentSession.SiteVariables = new SiteVariables(); 

// retrieve 
SiteVariables objSiteVariables = SessionHandler.CurrentSession.SiteVariables; 

이렇게하면 SessionHandler 클래스에 더 많은 속성을 추가하기 만하면 더 많은 세션을 추가 할 수 있습니다.

관련 문제