PersistenceParticipant.CollectValues Methode

Definitie

Een host roept deze methode aan op een aangepaste persistentiedeelnemer om waarden voor lezen/schrijven en alleen-schrijven-waarden te verzamelen, zodat deze behouden blijft.

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

Parameters

readWriteValues
IDictionary<XName,Object>

De waarden voor lezen/schrijven die moeten worden behouden.

writeOnlyValues
IDictionary<XName,Object>

De alleen-schrijven-waarden die moeten worden behouden.

Voorbeelden

Het volgende codevoorbeeld laat zien hoe u CollectValues gebruikt in een klasse die is afgeleid van PersistenceParticipant. Dit voorbeeld is afkomstig uit het voorbeeld persistentiedeelnemers .

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

Opmerkingen

De hostpakketten lezen-schrijven-waarden in de eerste woordenlijst als InstanceValue objecten van een InstanceData verzameling en verpakken alleen-schrijven-waarden in de tweede woordenlijst als InstanceValue objecten met Optional en WriteOnly vlaggen die zijn ingesteld. Zie InstanceValueOptions voor meer informatie.

Important

Elke waarde die wordt geleverd door implementaties van CollectValues alle persistentiedeelnemers binnen één persistentie-aflevering, moet een unieke XName hebben.

Van toepassing op