2

セッションにRadTreeNodeオブジェクトを割り当てています(セッションがnullでないことをデバッガーから確認しました)。そして、次のコードを使用して、それをRadTreeNodeオブジェクトにキャストバックしようとしています。

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

しかし、ノード変数はまだnullです。助言がありますか ?

4

1 に答える 1

1

@Richardのコメントで説明されているように、Session["nextNode"]がnullである可能性は十分にあります。

as RadTreeNodeソースオブジェクトがターゲットタイプに変換されない場合、「as」キャストはnull値を生成します。プレフィックスキャストは参照型を対象とし、キャストが失敗し(RadTreeNode)ても例外をスローしません。as RadTreeNode

あなたはRadTreeNodeにnull値をキャストしていて、あなたはあなたが想定しているものを手に入れています...RadTreeNodeのnull参照。

セッションは一般的に悪いので、可能な限り避けるべきです。私の推測では、Sessionが一方向に動作することを期待していますが、そうではありません。

たとえば、RadTreeNodeシリアル化可能ですか?しばらく経ちましたので、Sessionがオブジェクトのシリアル化/逆シリアル化をどのように処理するかは覚えていませんが、シリアル化に関連する例外が発生するのではないかと思います。確かに推測です。

于 2012-11-17T18:37:27.570 に答える