PersistenceParticipant.CollectValues Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Um host invoca esse método em um participante de persistência personalizado para coletar valores de leitura/gravação e valores somente gravação a serem persistidos.
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>
Os valores de leitura/gravação a serem persistidos.
- writeOnlyValues
- IDictionary<XName,Object>
Os valores somente gravação a serem persistidos.
Exemplos
O exemplo de código a seguir demonstra o uso de CollectValues em uma classe derivada de PersistenceParticipant. Este exemplo é do exemplo de Participantes de Persistência .
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;
}
}
}
Comentários
O host empacota valores de leitura e gravação no primeiro dicionário como InstanceValue objetos de uma InstanceData coleção e empacota valores somente gravação no segundo dicionário como InstanceValue objetos com Optional e WriteOnly sinalizadores definidos. Para obter mais informações, consulte InstanceValueOptions.
Importante
Cada valor fornecido por implementações de todos os participantes de CollectValues persistência dentro de um episódio de persistência deve ter um XName exclusivo.