PersistenceParticipant.CollectValues 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
宿主对自定义持久性参与者调用此方法,以收集要保留的读/写值和只写值。
protected:
virtual void CollectValues([Runtime::InteropServices::Out] System::Collections::Generic::IDictionary<System::Xml::Linq::XName ^, System::Object ^> ^ % readWriteValues, [Runtime::InteropServices::Out] System::Collections::Generic::IDictionary<System::Xml::Linq::XName ^, System::Object ^> ^ % writeOnlyValues);
protected virtual void CollectValues (out System.Collections.Generic.IDictionary<System.Xml.Linq.XName,object> readWriteValues, out System.Collections.Generic.IDictionary<System.Xml.Linq.XName,object> writeOnlyValues);
abstract member CollectValues : IDictionary * IDictionary -> unit
override this.CollectValues : IDictionary * IDictionary -> unit
Protected Overridable Sub CollectValues (ByRef readWriteValues As IDictionary(Of XName, Object), ByRef writeOnlyValues As IDictionary(Of XName, Object))
参数
- readWriteValues
- IDictionary<XName,Object>
要保持的读/写值。
- writeOnlyValues
- IDictionary<XName,Object>
要保持的只写值。
示例
下面的代码示例演示如何在一个从 PersistenceParticipant 派生的类中使用 CollectValues。 此示例来自 持久性参与者 示例。
public class StepCountExtension : PersistenceParticipant
{
static XNamespace stepCountNamespace = XNamespace.Get("urn:schemas-microsoft-com:Microsoft.Samples.WF/WorkflowInstances/properties");
static XName currentCountName = stepCountNamespace.GetName("CurrentCount");
int currentCount;
public int CurrentCount
{
get
{
return this.currentCount;
}
}
internal void IncrementStepCount()
{
this.currentCount += 1;
}
protected override void CollectValues(out IDictionary<XName, object> readWriteValues, out IDictionary<XName, object> writeOnlyValues)
{
readWriteValues = new Dictionary<XName, object>(1) { { currentCountName, this.currentCount } };
writeOnlyValues = null;
}
protected override void PublishValues(IDictionary<XName, object> readWriteValues)
{
object loadedData;
if (readWriteValues.TryGetValue(currentCountName, out loadedData))
{
this.currentCount = (int)loadedData;
}
}
}
注解
主机以 InstanceValue 集合的 InstanceData 对象的形式将读/写值包装在第一个字典中,并以 InstanceValue 对象的形式将只写值包装在第二个字典中(设置了 Optional 和 WriteOnly 标志)。 有关详细信息,请参阅 InstanceValueOptions。
重要
由一个持久性段内所有持久性参与者之间的 CollectValues 实现提供的每个值均必须具有唯一的 XName。