PersistenceParticipant.CollectValues Méthode

Définition

Un hôte appelle cette méthode sur un participant de persistance personnalisé pour collecter des valeurs en lecture-écriture et des valeurs en écriture seule, à conserver.

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

Paramètres

readWriteValues
IDictionary<XName,Object>

Valeurs en lecture-écriture à conserver.

writeOnlyValues
IDictionary<XName,Object>

Valeurs en écriture seule à conserver.

Exemples

L’exemple de code suivant illustre l’utilisation de CollectValues dans une classe qui dérive de PersistenceParticipant. Cet exemple provient de l’exemple Participants de persistance .

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

Remarques

L’hôte package les valeurs en lecture-écriture dans le premier dictionnaire en tant qu’objets InstanceValue d’une InstanceData collection, et packages les valeurs en écriture seule dans le deuxième dictionnaire en tant qu’objets InstanceValue avec Optional et WriteOnly indicateurs définis. Pour plus d’informations, consultez InstanceValueOptions.

Important

Chaque valeur fournie par les implémentations de tous les participants de CollectValues persistance au sein d’un épisode de persistance doit avoir un XName unique.

S’applique à