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

Definition

Der Host ruft diese Methode auf und übergibt alle geladenen Werte in der InstanceData-Auflistung (gefüllt per LoadWorkflowCommand oder LoadWorkflowByInstanceKeyCommand) als Wörterbuchparameter.

protected:
 virtual void PublishValues(System::Collections::Generic::IDictionary<System::Xml::Linq::XName ^, System::Object ^> ^ readWriteValues);
protected virtual void PublishValues (System.Collections.Generic.IDictionary<System.Xml.Linq.XName,object> readWriteValues);
abstract member PublishValues : System.Collections.Generic.IDictionary<System.Xml.Linq.XName, obj> -> unit
override this.PublishValues : System.Collections.Generic.IDictionary<System.Xml.Linq.XName, obj> -> unit
Protected Overridable Sub PublishValues (readWriteValues As IDictionary(Of XName, Object))

Parameter

readWriteValues
IDictionary<XName,Object>

Die Werte mit Lese-/Schreibzugriff, die aus dem Persistenzspeicher geladen wurden. Dieses Worterbuch entspricht dem Wörterbuch mit Lese-/Schreibwerten, die in der letzten Dauerhaftigkeitsepisode beibehalten wurden.

Beispiele

Im folgenden Codebeispiel wird die Verwendung von PublishValues in einer Klasse veranschaulicht, die von PersistenceParticipant abgeleitet wird. Dieses Beispiel stammt aus dem Beispiel Persistenzteilnehmer .

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

Gilt für: