2011-06-15 90 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