我正在为会话分配一个 RadTreeNode 对象(我从调试器检查该会话不为空)。然后我尝试使用以下代码将其转换回 RadTreeNode 对象。
RadTreeNode node = new RadTreeNode();
node = (RadTreeNode)Session["nextNode"] as RadTreeNode;
但是节点变量仍然为空。有什么建议么 ?
Session["nextNode"] 很有可能为空,正如@Richard 在他的评论中所逃避的那样。
如果源对象未转换为目标类型,则“as”强制as RadTreeNode
转换将产生空值。前缀转换(RadTreeNode)
以引用类型为目标,并且在转换失败时不会抛出异常as RadTreeNode
。
您正在向 RadTreeNode 投射一个空值,并且得到了应有的结果……RadTreeNode 的空引用。
会话通常很糟糕,应尽可能避免。我的猜测是您期望 Session 以一种方式行事,而事实并非如此。
例如,是否可RadTreeNode
序列化?已经有一段时间了,所以我不记得 Session 是如何处理序列化/反序列化对象的,但我猜它会吃掉与序列化相关的任何异常。诚然是猜测。