PersistenceParticipant.CollectValues Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Hostitel vyvolá tuto metodu u vlastního účastníka trvalosti, aby shromažďoval hodnoty jen pro čtení a hodnoty jen pro zápis, aby se zachovaly.
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))
Parametry
- readWriteValues
- IDictionary<XName,Object>
Hodnoty pro čtení a zápis, které se mají zachovat.
- writeOnlyValues
- IDictionary<XName,Object>
Hodnoty jen pro zápis, které se mají zachovat.
Příklady
Následující ukázka kódu ukazuje použití CollectValues ve třídě, která je odvozena od PersistenceParticipant. Tento příklad je z ukázky Účastníci trvalosti .
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;
}
}
}
Poznámky
Hostitel zabalí hodnoty pro čtení a zápis v prvním slovníku jako InstanceValue objekty InstanceData kolekce a balíčky hodnoty jen pro zápis do druhého slovníku jako InstanceValue objekty s nastavenými Optional příznaky.WriteOnly Další informace naleznete v tématu InstanceValueOptions.
Důležité
Každá hodnota poskytovaná implementacemi všech účastníků trvalosti v rámci jedné epizody CollectValues trvalosti musí mít jedinečný XName.