Freigeben über


PersistenceParticipant.CollectValues Methode

Definition

Ein Host ruft diese Methode für einen benutzerdefinierten Dauerhaftigkeitsteilnehmer auf, um Lese-/Schreibwerte und lesegeschützte Werte zu sammeln, die beibehalten werden sollen.

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

Parameter

readWriteValues
IDictionary<XName,Object>

Die Werte mit Lese-/Schreibzugriff, die beibehalten werden sollen.

writeOnlyValues
IDictionary<XName,Object>

Die Werte mit Nur-Schreibzugriff, die beibehalten werden sollen.

Beispiele

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

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

Hinweise

Der Host verpackt Lese-/Schreibwerte im ersten Wörterbuch als InstanceValue-Objekte einer InstanceData-Auflistung und verpackt lesegeschützte Werte im zweiten Wörterbuch als InstanceValue-Objekte, für die die Flags Optional und WriteOnly festgelegt sind. Weitere Informationen finden Sie unter InstanceValueOptions.

Wichtig

Jeder Wert, der von den Implementierungen von CollectValues für alle Dauerhaftigkeitsteilnehmer innerhalb einer Dauerhaftigkeitsepisode bereitgestellt wird, muss über einen eindeutigen XName verfügen.

Gilt für