Partager via


Méthode INotifyingChangeApplierTarget.TryGetDestinationVersion

Obtient la version d'un élément stocké dans le réplica de destination.

Espace de noms: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (dans microsoft.synchronization.dll)

Syntaxe

'Déclaration
Function TryGetDestinationVersion ( _
    sourceChange As ItemChange, _
    <OutAttribute> ByRef destinationVersion As ItemChange _
) As Boolean
'Utilisation
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.

Paramètres

  • sourceChange
    Modification d'élément qui est envoyée par le fournisseur de source.
  • destinationVersion
    Retourne une modification d'élément qui contient la version de l'élément dans le réplica de destination.

Valeur de retour

true si l'élément est trouvé dans le réplica de destination ; sinon, false.

Notes

Cette méthode est appelée par NotifyingChangeApplier lorsque les versions de destination ne sont pas passées à la méthode ApplyChanges. La méthode TryGetDestinationVersion est appelée une fois pour chaque modification dans le lot de modifications envoyé à l'applicateur de modifications.

Cette méthode est facultative et peut lever une exception NotImplementedException, sauf lorsque le fournisseur signale des conflits de contraintes ou que tout autre fournisseur de la communauté de synchronisation résout les conflits de contraintes par fusion. Dans l'un ou l'autre de ces cas, cette méthode doit être implémentée.

Exemple

L'exemple suivant montre comment obtenir les versions de destination d'unités de modification contenues dans un élément à l'aide du service de stockage des métadonnées.

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

Voir aussi

Référence

Interface INotifyingChangeApplierTarget
Membres INotifyingChangeApplierTarget
Espace de noms Microsoft.Synchronization