2011-06-15 2 views
0

아래 코드를 사용하면 세션 변수는 일반 클래스와 SessionVariables 구조체로 선언됩니다.변수 이름 길이 줄이기

세션 변수 이름이 꽤 오래 사용되면서 상황에 따라 변수 이름을 최소화 할 수있는 방법이 있습니까? 클래스 이름을 포함하지 않고 SessionVariables.IsLogout과 같은 변수 이름을 사용할 수 있습니까? 일반 클래스에서 클래스를 상속하는 것 그 일의

세션 [Common.SessionVariables.IsLogout]

public class Common 
{ 
    public struct SessionVariables 
    { 
     public static string IsLogout = "IsLogout"; 
    } 
} 
+6

긴 세션 변수가 좋은 일이 고려 될 수있다! 그들은 그들의 목적을 기술하고 스스로 문서화하고 있습니다. 그것은 s와 같은 임의의 값인 이름을 사용합니다. –

답변

2

당신은 usingalias directive를 사용할 수 있습니다

내 2 센트

+0

좋은 생각이지만 SV = Common.SessionVariables를 사용하는 것이 좋지는 않습니다. 모든 코드 파일에 입력해야합니다. 프로젝트의 모든 코드 파일에 대해 전역으로 등록 할 수 있습니까? – Tomas

+0

@Tomas : 불행히도. 하지만 나는 그것이 거래가라고 생각하지 않습니다. 왜냐하면 a) 파일 당 한 번만 할 수 있기 때문입니다. b) 그렇게하지 않으면 먼 길을 갈 수 있습니다. 그래서 개발자가해야 할 특별한 트릭에 의존하지 않습니다. 알고 있기 때문에 c) 순수하게 동의 함 – Jon

+0

정말 간단한 해결책이기 때문에 올바른 답을 표시하고 추가 코드를 작성할 필요가없고 쉽고 깨끗합니다. – Tomas

1

한 가지 방법. 그런 다음 변수를 SessionVariables.IsLogout으로 직접 참조 할 수 있습니다.

0

당신은 같은 "바로 가기 클래스"를 만들 수 있습니다 :

public class SesVar 
{ 
    public Common.SessionVariables IsLogout 
    { 
     get 
     { 
      return Common.SessionVariables.IsLogout; 
     } 
    } 
} 

을 그리고 당신은 Session[SesVar.IsLogout]을 CAH.

하지만 개인적으로는 코드의 가독성 및 IntelliSense에 적합하지 않아서 대부분 입력하지 않습니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write(Account.UserID); 
} 

그것은 세션 [Sessionvariables.UserID] 모두 사용하지 않고 사용하는 것이 훨씬 짧다 :

1

이것은 짧은

public static class Account 
    { 
     public static int UserID 
     { 
      get { return Session[SessionVariables.UserID]; } 
      set { Session[SessionVariables.UserID] = value; } 
     } 

     // .... and so on 
    } 

이처럼 사용할 수 있습니다 만드는 하나의 방법입니다 시간.

class PageWithProperties 
{ 
    public bool IsLogout { get{ return (bool)Session["IsLogout"] } 
          set { Session["IsLogout"] = value; } } 
} 

class PageClass : PageWithProperties 
{ 
    void PageClassMethod() 
    { 
     if(IsLogout) 
     { 

     } 
    } 
} 
0

당신은 다음과 같은 특성을 가진 기본 클래스를 만들 수 있습니다. 그런 다음이 예에서와 같이 SV.IsLogout로 변수에 액세스 할 수 있습니다 :

namespace Foo 
{ 
    using SV = Common.SessionVariables; 

    public class Common 
    { 
     public struct SessionVariables 
     { 
      public static string IsLogout = "IsLogout"; 
     } 
    } 

    public class Example 
    { 
     public void Bar() 
     { 
      string test = SV.IsLogout; 
     } 
    } 
} 
2

HttpSessionState 클래스에 대한 확장 메서드를 만듭니다.

당신이 (입력 및 모든)를 사용할 수 있습니다
public static class HttpSessionStateExtensions 
{ 
    public static bool IsLoggedOut(this HttpSessionState instance) 
    { 
     return instance[Common.SessionVariables.IsLogout] == true.ToString(); 
    } 
    public static bool SetIsLoggedOut(this HttpSessionState instance, bool value) 
    { 
     instance[Common.SessionVariables.IsLogout] = value.ToString(); 
    } 
} 

:

session.IsLoggedOut(); 

session.SetIsLoggedOut(false); 
+0

세션에 값을 할당하는 방법을 보여줄 수 있습니까? 귀하의 코드는 세션에서만 읽을 수 있습니다. – Tomas

+0

답변을 업데이트했습니다. – jgauffin