PersistenceParticipant.CollectValues Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Un host invoca este método en un participante de persistencia personalizado para recopilar los valores de lectura y escritura, y los valores de solo escritura, que se deben 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 deben conservar.
- writeOnlyValues
- IDictionary<XName,Object>
Valores de solo escritura que van a persistir.
Ejemplos
El siguiente ejemplo de código muestra cómo utilizar CollectValues en una clase que deriva de PersistenceParticipant. Este ejemplo procede del ejemplo De 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 los valores de lectura y escritura en el primer diccionario como objetos InstanceValue de una colección InstanceData, y empaqueta los valores de solo escritura en el segundo diccionario como objetos InstanceValue con las marcas Optional y WriteOnly establecidas. Para obtener más información, vea InstanceValueOptions.
Importante
Cada valor proporcionado por implementaciones de CollectValues en todos los participantes de persistencia dentro de un episodio de persistencia debe tener un nombre XName único.