Share via


Método IRequestFilteredSync.SpecifyFilter

Quando substituído por uma classe derivada, negocia qual filtro será usado pelo provedor de origem durante a enumeração de alteração.

Namespace: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (em microsoft.synchronization.dll)

Sintaxe

'Declaração
Sub SpecifyFilter ( _
    filterRequest As FilterRequestCallback _
)
'Uso
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
)

Parâmetros

  • filterRequest
    O delegado usado pelo provedor de destino para solicitar que um filtro seja usado pelo provedor de origem durante a enumeração de alterações.

Comentários

A negociação de filtro é obtida por meio das seguintes etapas:

  1. Antes de o provedor de origem começar a enumerar alterações, o Sync Framework inicia a negociação de filtro chamando o método SpecifyFilter da interface IRequestFilteredSync implementada pelo provedor de destino.

  2. Durante o processamento de SpecifyFilter, o provedor de destino transmite filtros a FilterRequestCallback que é especificado pelo Sync Framework.

  3. Durante o processamento de FilterRequestCallback, o Sync Framework chama o método TryAddFilter da interface ISupportFilteredSync implementada pelo provedor de origem. Se o provedor de origem não oferecer suporte ao filtro solicitado, o provedor de destino poderá continuar solicitando filtros até encontrar um que tenha suporte.

Quando um filtro tiver sido negociado com êxito, o provedor de origem o usará para determinar os itens a serem incluídos durante a enumeração de alteração.

Observações para implementadores: Uma implementação desse método pode chamar FilterRequestCallback repetidamente, com diferentes filtros, até que um filtro com suporte do provedor de destino e do provedor de origem seja encontrado. O provedor de origem indica que não oferece suporte a um filtro ao retornar false em resposta à chamada de TryAddFilter.

Exemplo

O exemplo a seguir implementa SpecifyFilter. O primeiro filtro controlado solicitado como o filtro para a sincronização. Uma exceção será lançada se o provedor de origem negar o filtro solicitado.

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.");
    }
}

Consulte também

Referência

Interface IRequestFilteredSync
Membros IRequestFilteredSync
Namespace Microsoft.Synchronization