【发布时间】:2009-11-06 17:14:32
【问题描述】:
提供对会话对象的强类型访问的最佳方式是什么?我打算打开 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)
【问题讨论】:
-
你为什么要这样做?你想解决什么问题?那可能是有价值的。 :-D
-
我设置了 Option Strict,这样开发人员 B 就不会出现并在“Blah”中填充字符串,从而导致开发人员 A 编写的代码崩溃。将它放在两个开发人员都使用的类中会迫使他们都将“Blah”视为整数。