2011-06-15 128 views
0

我使用下面的代碼,會話變量聲明在共同類和會話變量結構。縮小變量名長度

會話變量名稱變得相當長使用,你有任何想法如何變量名稱可以最小化在我的情況?我可以在不包含類名的情況下使用像SessionVariables.IsLogout這樣的變量名嗎?

會議[Common.SessionVariables.IsLogout]

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

龍會話變量可以被認爲是一件好事!他們描述他們的目的,並自我記錄,它使用一些任意值的名字,如s, – 2011-06-15 08:16:25

回答

2

您可以使用usingalias directive。然後,您將能夠訪問該變量作爲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; 
     } 
    } 
} 
+0

好主意,但我不喜歡使用SV = Common.SessionVariables;必須放在每個代碼文件中。項目中是否可以全局註冊所有代碼文件? – Tomas 2011-06-15 08:59:07

+0

@Tomas:不幸的不是。但我不認爲這是一個破壞者,因爲a)每個文件只做一次,b)即使你不這樣做,你也可以長時間工作,所以它不依賴任何特殊的技巧,注意,c)它純粹是選擇性的 – Jon 2011-06-15 09:01:40

+0

我將你的答案標記爲正確,因爲它確實是最短的解決方案,不需要編寫任何額外的代碼,簡單而乾淨。 – Tomas 2011-06-15 09:05:41

1

一個做這將是從通用類繼承類的方式。然後您可以直接將該變量稱爲SessionVariables.IsLogout。

0

您可以創建一個 「快捷方式類」,如:

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

然後你做CAH Session[SesVar.IsLogout]

但個人而言,我不會那樣做,因爲它不利於您的代碼的可讀性,而且無論如何,IntelliSense都會爲您輸入大部分內容。

1

這使得它更短

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

     // .... and so on 
    } 

你可以使用他們喜歡這個只是其中一種方法:

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

這是一個很大較短的使用,而不是使用Session [Sessionvariables.UserID]所有時間。

我的2美分

0

你可以創建諸如性能的基類:

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

class PageClass : PageWithProperties 
{ 
    void PageClassMethod() 
    { 
     if(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 2011-06-15 08:50:51

+0

我已經更新了答案。 – jgauffin 2011-06-15 09:16:02