PersistenceParticipant.CollectValues Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Um host invoca este método num participante de persistência personalizado para recolher valores de leitura-escrita e valores apenas de escrita, 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 e escrita devem ser mantidos.
- writeOnlyValues
- IDictionary<XName,Object>
Os valores apenas de escrita devem ser mantidos.
Exemplos
O exemplo de código seguinte demonstra o uso de CollectValues numa classe que deriva de PersistenceParticipant. Este exemplo é da amostra 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;
}
}
}
Observações
O host empacota valores de leitura-escrita no primeiro dicionário como InstanceValue objetos de uma InstanceData coleção, e empacota valores apenas de escrita no segundo dicionário como InstanceValue objetos com Optional e WriteOnly flags definidos. Para obter mais informações, veja InstanceValueOptions.
Importante
Cada valor fornecido pelas implementações de CollectValues em todos os participantes de persistência num episódio de persistência deve ter um XName único.