C# Sharepoint工作流:如何获取;“以前的财产”;在WorkflowItemChanged事件处理程序中

C# Sharepoint工作流:如何获取;“以前的财产”;在WorkflowItemChanged事件处理程序中,c#,.net,sharepoint,workflow,C#,.net,Sharepoint,Workflow,我有一个sharepoint工作流,其状态为等待查看用户对工作流所附加到的列表项所做的更改 我的状态具有“OnWorkflowItemChanged”活动。在该活动中,我绑定了“AfterProperties”和“BeforeProperties”,它们在代码隐藏中创建了以下成员: public Hashtable m_listItemBefore = new System.Collections.Hashtable(); public Hashtable m_listItemAfter = n

我有一个sharepoint工作流,其状态为等待查看用户对工作流所附加到的列表项所做的更改

我的状态具有“OnWorkflowItemChanged”活动。在该活动中,我绑定了“AfterProperties”和“BeforeProperties”,它们在代码隐藏中创建了以下成员:

public Hashtable m_listItemBefore = new System.Collections.Hashtable();
public Hashtable m_listItemAfter = new System.Collections.Hashtable();
然后,我为活动中调用的事件添加了一个方法,我认为这样就可以了。但是,当代码到达我调用的函数时,m_listItemAfter对象包含所有新信息,但m_listItemBefore是空的

类似地,如果我直接通过以下方式访问列表项:

this.workflowProperties.Item["field name"]
我也得到了新的价值观


我的工作流程的逻辑要求我查看他们更改数据的来源以及新值。你知道我做错了什么吗?

我相信BeforeProperties只在同步事件(ItemAdding,ItemUpdated)中可用,而在异步事件(ItemAdded,ItemUpdated)中不可用


这是一个相当令人沮丧的问题,过去也让我有点困扰,但我很确定这是对的。因此,如果您真的必须拥有BeforeProperties,则必须求助于同步事件。

同意。我认为Clyde需要一个事件处理程序而不是工作流。