提供对会话对象的强类型访问的最佳方法是什么?我打算开启Option Strict,这会导致编译器抱怨我直接访问会话对象的懒惰编程技术:
Dim blah As Integer = Session("Blah")
我最初的想法是创建一个包装会话的类,并为会话中存储的信息提供强类型属性。但是,我无法确定该类是应该是单例,还是在每次使用时实例化,或者代码应该驻留在哪里(即在Web项目内或类库中)。
我倾向于在我的班级图书馆中使用单身人士,但我不知道这是否是最佳解决方案,或者我是否缺少任何其他可能性。
建议的解决方案:
Public Class SessionAccess
Public Shared Property Blah(ByVal session As HttpSessionState) As Integer
Get
Return Convert.ToInt32(session("Blah"))
End Get
Set(ByVal value As Integer)
session("Blah") = value
End Set
End Property
End Class
代码背后:
Dim blah As Integer = SessionAccess.Blah(session)
答案 0 :(得分:1)
我删除了原来的答案,因为@Jason Berkan在质疑我的答案时提出了一个非常好的观点。杰森,我觉得这个想法很好。
我在代码示例中唯一要改变的是检查以确保会话变量存在。
答案 1 :(得分:1)
我的提案是“标准”方式,或者没有人包装他们的会话访问权限,因为这个问题没有收到很多答案。
我确实在this answer中找到了一行提到创建SessionManager:
我没有想到任何理由不使用单例类来提供对会话的类型化访问,因此这是我在项目中使用的解决方案。