Поделиться через


Метод INotifyingChangeApplierTarget.TryGetDestinationVersion

Возвращает версию хранилища элемента, хранящегося в реплике назначения.

Пространство имен: Microsoft.Synchronization
Сборка: Microsoft.Synchronization (в microsoft.synchronization.dll)

Синтаксис

'Декларация
Function TryGetDestinationVersion ( _
    sourceChange As ItemChange, _
    <OutAttribute> ByRef destinationVersion As ItemChange _
) As Boolean
'Применение
Dim instance As INotifyingChangeApplierTarget
Dim sourceChange As ItemChange
Dim destinationVersion As ItemChange
Dim returnValue As Boolean

returnValue = instance.TryGetDestinationVersion(sourceChange, destinationVersion)
bool TryGetDestinationVersion (
    ItemChange sourceChange,
    out ItemChange destinationVersion
)
bool TryGetDestinationVersion (
    ItemChange^ sourceChange, 
    [OutAttribute] ItemChange^% destinationVersion
)
boolean TryGetDestinationVersion (
    ItemChange sourceChange, 
    /** @attribute OutAttribute() */ /** @ref */ ItemChange destinationVersion
)
JScript does not support passing value-type arguments by reference.

Параметры

  • sourceChange
    Изменение элемента, отправленное поставщику источника.
  • destinationVersion
    Возвращает изменение элемента, содержащее версию элемента в реплике назначения.

Возвращаемое значение

Возвращает значение true, если элемент найден в реплике назначения. В противном случае возвращает значение false.

Замечания

Этот метод вызывается объектом NotifyingChangeApplier, если версии назначения не передаются методу ApplyChanges. Метод TryGetDestinationVersion вызывается один раз для каждого изменения в пакете изменений, который отправляется для применения изменений.

Этот метод является необязательным и может вызывать исключение NotImplementedException, если только поставщик не сообщает о конфликтах ограничений или любой другой поставщик в сообществе синхронизации не разрешает конфликты с помощью слияния. В любом из этих случаев необходимо реализовывать данный метод.

Пример

В следующем примере показано, как с помощью службы хранилища метаданных получить версии назначения базовых единиц, содержащихся в элементе.

Public Function TryGetDestinationVersion(ByVal sourceChange As ItemChange, ByRef destinationVersion As ItemChange) As Boolean Implements INotifyingChangeApplierTarget.TryGetDestinationVersion
    Dim found As Boolean = False
    ' Get the item metadata from the metadata store.
    Dim itemMeta As ItemMetadata = _ContactStore.ContactReplicaMetadata.FindItemMetadataById(sourceChange.ItemId)
    If itemMeta IsNot Nothing Then
        ' The item metadata exists, so translate the change unit metadata to the proper format and
        ' return the item change object.
        Dim cuChange As ChangeUnitChange
        Dim cuChanges As New List(Of ChangeUnitChange)()
        For Each cuMeta As ChangeUnitMetadata In itemMeta.GetChangeUnitEnumerator()
            cuChange = New ChangeUnitChange(IdFormats, cuMeta.ChangeUnitId, cuMeta.ChangeUnitVersion)
            cuChanges.Add(cuChange)
        Next
        destinationVersion = New ItemChange(IdFormats, _ContactStore.ContactReplicaMetadata.ReplicaId, sourceChange.ItemId, ChangeKind.Update, itemMeta.CreationVersion, cuChanges)

        found = True
    Else
        destinationVersion = Nothing
    End If
    Return found
End Function
public bool TryGetDestinationVersion(ItemChange sourceChange, out ItemChange destinationVersion)
{
    bool found = false;
    // Get the item metadata from the metadata store.
    ItemMetadata itemMeta = _ContactStore.ContactReplicaMetadata.FindItemMetadataById(sourceChange.ItemId);
    if (null != itemMeta)
    {
        // The item metadata exists, so translate the change unit metadata to the proper format and
        // return the item change object.
        ChangeUnitChange cuChange;
        List<ChangeUnitChange> cuChanges = new List<ChangeUnitChange>();
        foreach (ChangeUnitMetadata cuMeta in itemMeta.GetChangeUnitEnumerator())
        {
            cuChange = new ChangeUnitChange(IdFormats, cuMeta.ChangeUnitId, cuMeta.ChangeUnitVersion);
            cuChanges.Add(cuChange);
        }
        destinationVersion = new ItemChange(IdFormats, _ContactStore.ContactReplicaMetadata.ReplicaId, sourceChange.ItemId,
            ChangeKind.Update, itemMeta.CreationVersion, cuChanges);

        found = true;
    }
    else
    {
        destinationVersion = null;
    }
    return found;
}

См. также

Справочник

Интерфейс INotifyingChangeApplierTarget
Элементы INotifyingChangeApplierTarget
Пространство имен Microsoft.Synchronization