Partager via


Méthode IRequestFilteredSync.SpecifyFilter

En cas de substitution dans une classe dérivée, négocie le filtre qui est utilisé par le fournisseur de source pendant l'énumération des modifications.

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

Syntaxe

'Déclaration
Sub SpecifyFilter ( _
    filterRequest As FilterRequestCallback _
)
'Utilisation
Dim instance As IRequestFilteredSync
Dim filterRequest As FilterRequestCallback

instance.SpecifyFilter(filterRequest)
void SpecifyFilter (
    FilterRequestCallback filterRequest
)
void SpecifyFilter (
    FilterRequestCallback^ filterRequest
)
void SpecifyFilter (
    FilterRequestCallback filterRequest
)
function SpecifyFilter (
    filterRequest : FilterRequestCallback
)

Paramètres

  • filterRequest
    Délégué qui est utilisé par le fournisseur de destination pour demander qu'un filtre soit utilisé par le fournisseur de source pendant l'énumération des modifications.

Notes

Pour négocier l'utilisation des filtres, procédez comme suit :

  1. Avant que le fournisseur de source commence à énumérer les modifications, Sync Framework démarre la négociation des filtres en appelant la méthode SpecifyFilter de l'interface IRequestFilteredSync implémentée par le fournisseur de destination.

  2. Pendant le traitement de la méthode SpecifyFilter, le fournisseur de destination passe des filtres au FilterRequestCallback spécifié par Sync Framework.

  3. Pendant le traitement de la méthode FilterRequestCallback, Sync Framework appelle la méthode TryAddFilter de l'interface ISupportFilteredSync implémentée par le fournisseur de source. Si le fournisseur de source ne prend pas en charge le filtre demandé, le fournisseur de destination peut continuer à demander des filtres jusqu'à ce qu'il en trouve un pris en charge.

Lorsqu'un filtre a été négocié avec succès, le fournisseur de source l'utilise pour déterminer les éléments à inclure pendant l'énumération des modifications.

Remarques à l'attention des implémenteurs : Une implémentation de cette méthode peut appeler à plusieurs reprises FilterRequestCallback avec différents filtres jusqu'à ce qu'un filtre pris en charge aussi bien par le fournisseur de destination que par le fournisseur de source soit trouvé. Le fournisseur de source indique qu'il ne prend pas en charge un filtre en retournant false en réponse à l'appel de TryAddFilter.

Exemple

L'exemple suivant implémente SpecifyFilter. Premier filtre suivi demandé comme filtre pour la synchronisation. Une exception est levée si le fournisseur de source refuse le filtre demandé.

Public Sub SpecifyFilter(ByVal filterRequest As FilterRequestCallback) Implements IRequestFilteredSync.SpecifyFilter
    ' Use the first tracked filter as the filter for sync.
    If 0 < _ContactStore.TrackedFilters.Count Then
        _filterForSync = _ContactStore.TrackedFilters(0)
    End If

    ' The source provider must agree to send a filtered change batch.
    If Not filterRequest(_filterForSync, FilteringType.CurrentItemsAndVersionsForMovedOutItems) Then
        Throw New SyncInvalidOperationException("Filter specified by SpecifyFilter was rejected.")
    End If
End Sub
public void SpecifyFilter(FilterRequestCallback filterRequest)
{
    // Use the first tracked filter as the filter for sync.
    if (0 < _ContactStore.TrackedFilters.Count)
    {
        _filterForSync = _ContactStore.TrackedFilters[0];
    }

    // The source provider must agree to send a filtered change batch.
    if (!filterRequest(_filterForSync, FilteringType.CurrentItemsAndVersionsForMovedOutItems))
    {
        throw new SyncInvalidOperationException("Filter specified by SpecifyFilter was rejected.");
    }
}

Voir aussi

Référence

Interface IRequestFilteredSync
Membres IRequestFilteredSync
Espace de noms Microsoft.Synchronization