PersistenceParticipant.CollectValues Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Узел вызывает этот метод для нестандартного участника сохраняемости, собирающего значения, доступные для чтения и записи, и значения, доступные только на запись, которые необходимо сохранить.
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))
Параметры
- readWriteValues
- IDictionary<XName,Object>
Сохраняемые значения для чтения и записи.
- writeOnlyValues
- IDictionary<XName,Object>
Сохраняемые значения, доступные только на запись.
Примеры
В следующем образце кода показано использование метода CollectValues в классе, производном от PersistenceParticipant. Этот пример приведен в примере "Участники сохраняемости ".
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;
}
}
}
Комментарии
Узел упаковывает значения, доступные для чтения и записи, в первый словарь в виде объектов InstanceValue коллекции InstanceData, а значения, доступные только на запись, — во второй словарь в виде объектов InstanceValue с установленными флагами Optional и WriteOnly. Для получения дополнительной информации см. InstanceValueOptions.
Важно!
Все значения, предоставленные реализациями CollectValues для всех участников сохраняемости в одном сеансе сохраняемости, должны иметь уникальные свойства XName.