PersistenceParticipant.CollectValues Método

Definición

Un host invoca este método en un participante de persistencia personalizado para recopilar valores de lectura y escritura y valores de solo escritura, que se van a conservar.

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

Parámetros

readWriteValues
IDictionary<XName,Object>

Valores de lectura y escritura que se van a conservar.

writeOnlyValues
IDictionary<XName,Object>

Valores de solo escritura que se van a conservar.

Ejemplos

En el ejemplo de código siguiente se muestra el uso de CollectValues en una clase que deriva de PersistenceParticipant. Este ejemplo procede del ejemplo Participantes de persistencia .

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

Comentarios

El host empaqueta valores de lectura y escritura en el primer diccionario como InstanceValue objetos de una InstanceData colección y empaqueta valores de solo escritura en el segundo diccionario como InstanceValue objetos con Optional y WriteOnly marcas establecidas. Para obtener más información, consulte InstanceValueOptions.

Importante

Cada valor proporcionado por implementaciones de en todos los participantes de persistencia dentro de CollectValues un episodio de persistencia debe tener un XName único.

Se aplica a