asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net – 为会话值的关键名称创建枚举是一个好主意吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
而不是做
session("myvar1") = something
 session("myvar2") = something
 session("myvar3") = something
 session("myvar4") = something

是在做

enum sessionVar
   myvar1
   myvar2
   myvar3
   myvar4
end enum


 session(sessionVar.myvar1.toString) = something
 session(sessionVar.myvar2.toString) = something
 session(sessionVar.myvar3.toString) = something
 session(sessionVar.myvar4.toString) = something

会更好?

解决方法

而不是使用会话密钥的常量,我使用我自己的类型安全的会话对象,看起来像这样(对不起,这是在C#,见下面的VB版本):
public class MySession
{
  // Private constructor (use MySession.Current to access the current instancE).
  private MySession() {}

  // Gets the current session.
  public static MySession Current
  {
    get
    {
      MySession session = httpContext.Current.Session["__MySession__"] as MySession;
      if (session == null)
      {
        session = new MySession();
        httpContext.Current.Session["__MySession__"] = session;
      }
      return session;
    }
  }

  // My session data goes here:
  public String MyString { get; set; };
  public bool MyFlag { get; set; };
  public int Mynumber { get; set; };
}

每当我需要读/写会话时,我可以使用我的类型安全会话对象,如下所示:

String s = MySession.Current.MyString;
s = "new value";
MySession.Current.MyString = s;

这个解决方案有几个优点:

>我有一个类型安全的会话(没有更多的类型转换)
>我可以记录所有基于会话的数据(通过在MySession中注释公共属性)
>当向会话添加新元素时,我不必搜索解决方案来检查是否已经在其他地方使用了同一个会话密钥.

更新:
这是一个VB版本(从C#版本自动转换).对不起,但我不知道VB,所以我不知道如何在VB中写属性:

Public Class MySession
    ' Private constructor (use MySession.Current to access the current instancE).
    Private Sub New()
    End Sub

    ' Gets the current session.
    Public Shared ReadOnly Property Current() As MySession
        Get
            Dim session As MySession = TryCast(httpContext.Current.Session("__MySession__"),MySession)
            If session = Nothing Then
                session = New MySession()
                httpContext.Current.Session("__MySession__") = session
            End If
            Return session
        End Get
    End Property

    ' My session data goes here:
    Public MyString As String
    Public MyFlag As Boolean
    Public Mynumber As Integer
End Class

大佬总结

以上是大佬教程为你收集整理的asp.net – 为会话值的关键名称创建枚举是一个好主意吗?全部内容,希望文章能够帮你解决asp.net – 为会话值的关键名称创建枚举是一个好主意吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。