Aracılığıyla paylaş


PersistenceParticipant.CollectValues Yöntem

Tanım

Bir konak, kalıcı hale getirmek üzere okuma-yazma değerlerini ve salt yazma değerlerini toplamak için özel bir kalıcılık katılımcısı üzerinde bu yöntemi çağırır.

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))

Parametreler

readWriteValues
IDictionary<XName,Object>

Kalıcı hale getirmek için okuma-yazma değerleri.

writeOnlyValues
IDictionary<XName,Object>

Kalıcı hale getirmek için yalnızca yazma değerleri.

Örnekler

Aşağıdaki kod örneği, öğesinden PersistenceParticipanttüretilen bir sınıfta CollectValues kullanmayı gösterir. Bu örnek Kalıcılık Katılımcıları örneğinden alınmalıdır.

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;
        }
    }
}

Açıklamalar

Konak, ilk sözlükteki okuma-yazma değerlerini bir InstanceData koleksiyonun nesneleri olarakInstanceValue, ikinci sözlükteki salt yazma değerlerini ise ve WriteOnly bayrakları ayarlanmış nesneler Optional olarak InstanceValue paketler. Daha fazla bilgi için bkz. InstanceValueOptions.

Önemli

Bir kalıcılık bölümünde tüm kalıcılık katılımcılarının CollectValues uygulamaları tarafından sağlanan her değerin benzersiz bir XName'i olmalıdır.

Şunlara uygulanır