我将一个RadTreeNode对象分配给一个会话(我从调试器检查该会话不为null)。然后,我尝试使用以下代码将其投射回RadTreeNode对象。

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


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

最佳答案

Session [“ nextNode”]为null的可能性很大,如@Richard在其评论中所言。

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

您正在将一个空值强制转换为RadTreeNode,并且得到了您应该得到的... RadTreeNode的空引用。

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

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

关于c# - 将 session 转换到对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13433099/

10-09 03:15