У меня проблемы с получением нескольких экземпляров переменной сеанса из состояния сеанса InProc.
В следующем коде я сохраняю простой BusinessObject в переменной сеанса в событии Page_Load. Одним нажатием кнопки я пытаюсь извлечь объект обратно в 2 новых объявленных экземпляра того же BusinessObject.
Все прекрасно работает, пока я не изменю одно из свойств в первом экземпляре, он также изменит второй экземпляр.
Это нормальное поведение? Я бы подумал, так как это новые экземпляры, которые не будут демонстрировать статичное поведение?
Есть идеи, где я иду не так?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' create a new instance of a business object and set a containg variable
Dim BO As New BusinessObject
BO.SomeVariable = "test"
' persist to inproc session
Session("BO") = BO
End If
End Sub
Protected Sub btnRetrieveSessionVariable_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRetrieveSessionVariable.Click
' retrieve the session variable to a new instance of BusinessObject
Dim BO1 As New BusinessObject
If Not Session("BO") Is Nothing Then BO1 = Session("BO")
' retrieve the session variable to a new instance of BusinessObject
Dim BO2 As New BusinessObject
If Not Session("BO") Is Nothing Then BO2 = Session("BO")
' change the property value on the first instance
BO1.SomeVariable = "test2"
' why has this changed on both instances?
Dim strBO1Property As String = BO1.SomeVariable
Dim strBO2Property As String = BO2.SomeVariable
End Sub
' simple BusinessObject class
Public Class BusinessObject
Private _SomeVariable As String
Public Property SomeVariable() As String
Get
Return _SomeVariable
End Get
Set(ByVal value As String)
_SomeVariable = value
End Set
End Property
End Class