다음을 통해 공유


INotifyingChangeApplierTarget.TryGetDestinationVersion 메서드

대상 복제본에 저장된 항목의 버전을 가져옵니다.

네임스페이스: Microsoft.Synchronization
어셈블리: microsoft.synchronization.dll의 Microsoft.Synchronization

구문

‘선언
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입니다.

주의

이 메서드는 대상 버전이 ApplyChanges 메서드에 전달되지 않을 때 NotifyingChangeApplier에 의해 호출됩니다. TryGetDestinationVersion은 변경 내용 적용자에게 보낸 일괄 변경 내용의 각 변경 내용에 대해 한 번씩 호출됩니다.

이 메서드는 선택적이며, 공급자가 제약 조건 충돌을 보고하거나 동기화 커뮤니티의 다른 공급자가 병합을 통해 제약 조건 충돌을 해결하는 경우를 제외하고는 NotImplementedException을 발생시킬 수 있습니다. 두 경우 모두 이 메서드를 구현해야 합니다.

예제

다음 예제에서는 Metadata Storage Service를 사용하여 항목에 포함된 변경 단위의 대상 버전을 가져오는 방법을 보여 줍니다.

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 네임스페이스