我正在将 RadTreeNode 对象分配到 session 中(我从调试器中检查 session 不为空)。然后我尝试使用以下代码将其转换回 RadTreeNode 对象。
RadTreeNode node = new RadTreeNode();
node = (RadTreeNode)Session["nextNode"] as RadTreeNode;
但节点变量仍然为空。有什么建议吗?
最佳答案
Session["nextNode"] 很有可能为空,正如@Richard 在他的评论中所回避的那样。
如果源对象未转换为目标类型,则“as”转换as RadTreeNode
将产生空值。前缀转换 (RadTreeNode)
以引用类型为目标,当 as RadTreeNode
转换失败时不会抛出异常。
您将空值转换为 RadTreeNode 并且您得到了您应该得到的...RadTreeNode 的空引用。
session 通常很糟糕,应尽可能避免。我的猜测是您期望 Session 以一种方式行事,而不是。
例如,RadTreeNode
是否可序列化?已经有一段时间了,所以我不记得 Session 如何处理序列化/反序列化对象,但我猜它会吃掉与序列化相关的任何异常。诚然是一个猜测。
关于c# - 将 session 转换到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13433099/