PersistenceParticipant.CollectValues Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ein Host ruft diese Methode für einen benutzerdefinierten Dauerhaftigkeitsteilnehmer auf, um Lese-/Schreibwerte und lesegeschützte Werte zu sammeln, die beibehalten werden sollen.
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))
Parameter
- readWriteValues
- IDictionary<XName,Object>
Die Werte mit Lese-/Schreibzugriff, die beibehalten werden sollen.
- writeOnlyValues
- IDictionary<XName,Object>
Die Werte mit Nur-Schreibzugriff, die beibehalten werden sollen.
Beispiele
Im folgenden Codebeispiel wird die Verwendung von CollectValues in einer Klasse veranschaulicht, die von PersistenceParticipant abgeleitet wird. Dieses Beispiel stammt aus dem Beispiel " Peristenzteilnehmer ".
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;
}
}
}
Hinweise
Der Host verpackt Lese-/Schreibwerte im ersten Wörterbuch als InstanceValue-Objekte einer InstanceData-Auflistung und verpackt lesegeschützte Werte im zweiten Wörterbuch als InstanceValue-Objekte, für die die Flags Optional und WriteOnly festgelegt sind. Weitere Informationen finden Sie unter InstanceValueOptions.
Wichtig
Jeder Wert, der von den Implementierungen von CollectValues für alle Dauerhaftigkeitsteilnehmer innerhalb einer Dauerhaftigkeitsepisode bereitgestellt wird, muss über einen eindeutigen XName verfügen.