2

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

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

但是节点变量仍然为空。有什么建议么 ?

4

1 回答 1

1

Session["nextNode"] 很有可能为空,正如@Richard 在他的评论中所逃避的那样。

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

您正在向 RadTreeNode 投射一个空值,并且得到了应有的结果……RadTreeNode 的空引用。

会话通常很糟糕,应尽可能避免。我的猜测是您期望 Session 以一种方式行事,而事实并非如此。

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

于 2012-11-17T18:37:27.570 回答