2012-08-07 2 views
0

다음과 같이 워크 플로 프로세스 기록 항목의 각 작업에 대한 승인 상태를 얻으려고합니다.워크 플로 기록에서 승인 상태를 얻는 방법은 무엇입니까?

var status = csClient.Read(activitiydetails.Id, readoption) as ApprovalStatusData; 
logdetails("Activity Approval Status--->" + status.Title.ToString()); 

내가 "개체 참조 오류"당신이 ApprovalStatusData 캐스팅하기 위해 As 연산자를 사용하는 경우

+3

왜 그런 오류가 발생한다고 생각하십니까? –

+0

알았습니다. var activityHistory = activitiydetails as ActivityHistoryData; logdetails ("활동 승인 상태 --->"+ activityHistory.ApprovalStatus.Title.ToString()); – user1428019

+0

당신이 알아 낸 것을 듣고 아주 좋아합니다. 앞으로 도미니크가 제안하고 "캐스트로"사용하지 않는 것이 좋습니다. 그가 캐스팅 스타일을 정확히 지적했기 때문에 그의 대답을 받아 들일 수 있습니까? –

답변

5

, 당신은 객체가 csClient.Read()에서 반환 된 경우 ApprovalStatusData 아니라는 것을 기대한다 얻고, 그 값은 null가됩니다 . 다음 줄에서 사용하려고하면 개체 참조 오류가 발생합니다.

변수가 activitiydetails [sic]이므로 ApprovalStatusData이 반환 될 것으로 예상해서는 안됩니다.

올바른 캐스트 연산자를 사용하여 코드를 작성하면 캐스팅을 시도 할 때 코드가 실패하고 InvalidCastException이 throw됩니다.

var status = (ApprovalStatusData)csClient.Read(activitiydetails.Id, readoption); 
logdetails("Activity Approval Status--->" + status.Title.ToString()); 
관련 문제