PersistenceParticipant.CollectValues Methode

Definition

Ein Host ruft diese Methode für einen benutzerdefinierten Persistenzteilnehmer auf, um Lese-/Schreibwerte und schreibgeschü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 zu speichernden Lese-/Schreibwerte.

writeOnlyValues
IDictionary<XName,Object>

Die schreibgeschützten Werte, die beibehalten werden sollen.

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung von CollectValues in einer Klasse, die von PersistenceParticipant. Dieses Beispiel stammt aus dem Beispiel für 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;
        }
    }
}

Hinweise

Der Host packt Lese-/Schreibwerte im ersten Wörterbuch als InstanceValue Objekte einer InstanceData Auflistung und packt schreibgeschützte Werte im zweiten Wörterbuch als InstanceValue Objekte mit Optional und WriteOnly Flags. Weitere Informationen finden Sie unter InstanceValueOptions.

Important

Jeder Wert, der von Implementierungen aller CollectValues Persistenzteilnehmer innerhalb einer Persistenz-Episode bereitgestellt wird, muss über einen eindeutigen XName verfügen.

Gilt für: