PersistenceParticipant.CollectValues Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Un hôte appelle cette méthode sur un participant de persistance personnalisé pour recueillir des valeurs en lecture-écriture et des valeurs en écriture seule à rendre persistantes.
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 à rendre persistantes.
- writeOnlyValues
- IDictionary<XName,Object>
Valeurs en écriture seule à rendre persistantes.
Exemples
L'exemple de code suivant montre comment utiliser CollectValues dans une classe qui dérive de PersistenceParticipant. Cet exemple provient de l’exemple Participants à la 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
Valeurs en lecture-écriture des packages hôtes dans le premier dictionnaire en tant qu’objets InstanceValue d’une collection InstanceData, et valeurs en écriture seule des packages dans le deuxième dictionnaire en tant qu’objets InstanceValue avec indicateurs Optional et WriteOnly définis. Pour plus d'informations, consultez InstanceValueOptions.
Important
Chaque valeur fournie par les implémentations de CollectValues dans tous les participants de persistance dans le cadre d'un même épisode de persistance doit avoir un XName unique.