2012-11-17 7 views
1

세션에 RadTreeNode 객체를 할당하려고합니다 (디버거에서 세션이 null이 아닌지 확인). 그리고 나서 다음 코드를 사용하여 RadTreeNode 객체로 다시 캐스팅하려고합니다.세션으로 객체 캐스트하기

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

그러나 node 변수는 여전히 null입니다. 어떤 제안?

+2

아마도 세션에없는 것입니다. 당신의 글이 정확합니까? 귀하의 캐스트가 펑키 btw입니다. – usr

+1

이 두 문장 앞에있는 Session [ "nextNode"]'*의 유형은 무엇입니까? – Richard

+0

내부에 radTreeNode가 있습니다! 나는 그것을 검사했다. 나는 다른 메소드에 Session [ "nextNode"] = newRadTreeNode 타입 인 RadTreeNode를 가지고있다. – user1292656

답변

0

Session [ "nextNode"]이 null 일 가능성이 높습니다. 그의 코멘트에서 @Richard가 쫓아 버릴 가능성이 있습니다.

소스 개체가 대상 형식으로 변환되지 않는 경우 "as"캐스트 as RadTreeNode은 null 값을 반환합니다. 접두어 캐스트 (RadTreeNode)은 참조 유형을 대상으로하며 as RadTreeNode 캐스트가 실패 할 때 예외를 throw하지 않습니다.

RadTreeNode에 null 값을 캐스팅하면 RadTreeNode의 null 참조가됩니다.

세션은 일반적으로 좋지 않으므로 가능한 한 회피해야합니다. 내 생각 엔 세션이 한 가지 방법으로 행동 할 것으로 기대하고 있습니다.

예를 들어, RadTreeNode은 직렬화 가능합니까? 세션이 serialize/deserialize 객체를 처리하는 방법을 기억하지 못하기 때문에 잠시 동안이지만 직렬화와 관련된 예외는 모두 먹을 것이라고 추측합니다. 틀림없이 추측.

관련 문제