将会话转换为对象

时间:2012-11-17 17:46:18

标签: c# session telerik

我正在为一个会话分配一个RadTreeNode对象(我从调试器检查该会话不为null)。然后我尝试使用以下代码将其强制转换回RadTreeNode对象。

 RadTreeNode node = new RadTreeNode();
      node =  (RadTreeNode)Session["nextNode"] as RadTreeNode;

但节点变量仍然为null。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

Session [“nextNode”]很可能是空的,正如@Richard在评论中所说的那样。

如果源对象未转换为目标类型,则“as”强制转换as RadTreeNode将产生空值。前缀cast (RadTreeNode)以引用类型为目标,并且在as RadTreeNode强制转换失败时不会抛出异常。

你正在为RadTreeNode投射一个空值,你得到了你应该得到的东西......一个RadTreeNode的空引用。

会话通常很糟糕,应该尽可能避免。我的猜测是你期望Session表现一种方式而不是一种方式。

例如,RadTreeNode是否可序列化?已经有一段时间了,所以我不记得Session如何处理序列化/反序列化对象,但我猜它会吃掉与序列化相关的任何异常。无可否认地猜测。