2012-08-07 290 views
0

我正在嘗試獲取工作流程過程歷史記錄項目的每個活動的審批狀態,如下所示。如何從工作流歷史記錄中獲取審批狀態?

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

我收到「對象引用錯誤」

+3

爲什麼你認爲你得到了這個錯誤? – 2012-08-07 13:17:04

+0

明白了。 var activityHistory = activitiydetails as ActivityHistoryData; logdetails(「Activity Approval Status --->」+ activityHistory.ApprovalStatus.Title.ToString()); – user1428019 2012-08-07 13:42:20

+0

很高興聽到你想通了。在未來,我建議按Dominic的建議做,不要再使用「鑄造」構造。既然他指出了鑄造風格,你能接受他的答案嗎? – 2012-08-07 14:56:07

回答

5

當您使用As運營商轉換爲ApprovalStatusData,你應該想到,如果對象從csClient.Read()回不是ApprovalStatusData,其值爲null 。當你嘗試在下面一行中使用它時,你會得到一個對象引用錯誤。

看起來可能是因爲您的變量被稱爲activitiydetails [原文如此],您不應期待返回ApprovalStatusData

如果使用正確的Cast操作符編寫代碼,則當您嘗試強制轉換並拋出InvalidCastException時,代碼將失敗。

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