2016-08-26 3 views
0

Im очень новый Vb ..Очистить список в сессии объект

Я получаю следующее сообщение об ошибке «Option Strict On запрещающий поздно Binding», когда я пытаюсь очистить список в моем 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 (context, MySessionObject) .MyPropertyListList = Новый список (Of String). Этот aproach дает мне nullpointer, а также – user3116167

ответ

0

Всегда используйте option strict, тогда вы не смогли получить доступ к MyListProperty, пока не получили отличную от context от Object до фактического. В противном случае VB.NET попытается бросить его для вас, иногда с необычными результатами.

Так предполагая тип это MySessionObject:

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

Теперь я получаю nullpointer с этим подходом на второй строке. Тип будет «MySessionObject», как в строке 1 – user3116167

+0

@ user3116167: если вы получите 'NullReferenceException', вы еще не добавили этот объект в сеанс раньше. –

+0

Он должен быть там, но по крайней мере я вышел за начальный вопрос :) Попробуем и сделаем отладку на нем. – user3116167

Смежные вопросы