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 :
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.
Pendant le traitement de la méthode SpecifyFilter, le fournisseur de destination passe des filtres au FilterRequestCallback spécifié par Sync Framework.
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