我将一个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/