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:
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.
Durante o processamento de SpecifyFilter, o provedor de destino transmite filtros a FilterRequestCallback que é especificado pelo Sync Framework.
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