2016-08-26 67 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