2012-08-07 43 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()); 
相关问题