PersistenceParticipant.PublishValues Method (IDictionary<XName, Object>)

.NET Framework (current version)

The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

The host invokes this method and passes all the loaded values in the P:System.Activities.Persistence.SaveWorkflowCommand.InstanceData collection (filled by the T:System.Activities.Persistence.LoadWorkflowCommand or T:System.Activities.Persistence.LoadWorkflowByInstanceKeyCommand) as a dictionary parameter.

Namespace:   System.Activities.Persistence
Assembly:  System.Activities (in System.Activities.dll)

protected virtual void PublishValues(
	IDictionary<XName, object> readWriteValues


Type: System.Collections.Generic.IDictionary<XName, Object>

The read-write values that were loaded from the persistence store. This dictionary corresponds to the dictionary of read-write values persisted in the most recent persistence episode.

The following code sample demonstrates using PublishValues in a class that derives from PersistenceParticipant. This example is from the Persistence Participants sample.

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
            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;

.NET Framework
Available since 4.0
Return to top