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>

永続化する書き込み専用の値。

次のコード サンプルでは、 PersistenceParticipantから派生するクラスで CollectValues を使用する方法を示します。 この例は、 永続化の参加者 のサンプルからのものです。

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パッケージ化し、2 番目のディクショナリの書き込み専用値を、InstanceValueフラグとOptionalフラグが設定されたオブジェクトWriteOnlyオブジェクトとしてパッケージ化します。 詳細については、InstanceValueOptionsを参照してください。

Important

1 つの永続化エピソード内のすべての永続化参加者に対する CollectValues の実装によって提供される各値には、一意の XName が必要です。

適用対象