Compartir a través de


IRequestFilteredSync.SpecifyFilter Método

Cuando se invalida en una clase derivada, negocia el filtro que el proveedor de origen utiliza durante la enumeración de cambios.

Espacio de nombres: Microsoft.Synchronization
Ensamblado: Microsoft.Synchronization (en microsoft.synchronization.dll)

Sintaxis

'Declaración
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
    Delegado utilizado por el proveedor de destino para solicitar que el proveedor de origen utilice un filtro durante la enumeración de cambios.

Notas

La negociación de filtros se logra a través de los pasos siguientes:

  1. Antes de que el proveedor de origen empiece a enumerar cambios, Sync Framework inicia la negociación de filtros llamando al método SpecifyFilter de la interfaz IRequestFilteredSync implementada por el proveedor de destino.

  2. Durante el procesamiento de SpecifyFilter, el proveedor de destino pasa los filtros a FilterRequestCallback, especificado por Sync Framework.

  3. Durante el procesamiento de FilterRequestCallback, Sync Framework llama al método TryAddFilter de la interfaz ISupportFilteredSync implementada por el proveedor de origen. Si el proveedor de origen no admite el filtro solicitado, el proveedor de destino puede continuar solicitando filtros hasta encontrar uno admitido.

Cuando se ha negociado un filtro correctamente, el proveedor de origen lo utiliza para determinar qué elementos incluir durante la enumeración de cambios.

Notas a los implementadores: Una implementación de este método puede llamar repetidamente a FilterRequestCallback con filtros diferentes hasta que se encuentra un filtro admitido por el proveedor de destino y el proveedor de origen. Para indicar que no admite un filtro, el proveedor de origen devuelve false en respuesta a la llamada a TryAddFilter.

Ejemplo

En el ejemplo siguiente se implementa el método SpecifyFilter. Se solicita el primer filtro objeto de seguimiento como filtro para la sincronización. Se produce una excepción si el proveedor de origen deniega el 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.");
    }
}

Vea también

Referencia

IRequestFilteredSync Interfaz
IRequestFilteredSync Miembros
Microsoft.Synchronization Espacio de nombres