2016-08-26 101 views
0

林很新Vb的..清除列表在會話對象

我得到以下錯誤「選項嚴格On不允許後期綁定」當我試圖清除我的seesionObject列表中所示一樣。

Private Sub ClearSessionList() 
    Dim context As Object = System.Web.HttpContext.Current.Session("MySessionobject") 
    context.MyListProperty = New List(Of String) 
End Sub 

當我嘗試以下蒙上藏漢

DirectCast(context.MyListProperty, List(Of String)) 
CType(context.MyListProperty, List(Of String)) 

我認爲我的強制類型轉換錯誤在某種程度上,任何人都可以指出錯誤,我和展示我如何可以清除列表中的錯誤依然存在?

+0

什麼是對象的類型,你在會話存儲?從會話中讀取時,您需要在上下文對象上使用Ctype,這樣您可以爲變量獲取實際類型,並且它是強類型代碼。 – Esko

+0

CType(上下文,MySessionObject).MyPropertyListList =新列表(字符串)..這個問題給我一個空指針 – user3116167

回答

0

總是使用option strict,那麼你不能訪問MyListProperty,直到你沒有鑄造contextObject到它的實際類型。否則,VB.NET會嘗試爲你施放它,有時會產生奇怪的結果。

所以假設的類型是MySessionObject

Dim context As Object = System.Web.HttpContext.Current.Session("MySessionobject") 
Dim myObj As MySessionObject = DirectCast(context, MySessionObject) 
myObj.MyListProperty.Clear() 
+0

現在我在第二行得到一個空指針。 該類型將是第1行中的「MySessionObject」 – user3116167

+0

@ user3116167:如果您遇到'NullReferenceException',您尚未將此對象添加到會話中。 –

+0

它應該在那裏,但至少我超越了最初的問題:) 將嘗試並對其進行一些調試.. – user3116167