Поделиться через


Метод IRequestFilteredSync.SpecifyFilter

При переопределении в производном классе согласует фильтр, используемый для перечисления изменений поставщиком источника.

Пространство имен: Microsoft.Synchronization
Сборка: Microsoft.Synchronization (в microsoft.synchronization.dll)

Синтаксис

'Декларация
Sub SpecifyFilter ( _
    filterRequest As FilterRequestCallback _
)
'Применение
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
)

Параметры

  • filterRequest
    Делегат, используемый поставщиком назначения для запроса фильтра, используемого поставщиком источника в процессе перечисления изменений.

Замечания

Согласование фильтров достигается выполнением следующих действий.

  1. Прежде чем поставщик источника начинает перечисление изменений, Sync Framework инициирует согласование фильтров вызовом метода SpecifyFilter интерфейса IRequestFilteredSync, реализуемого поставщиком назначения.

  2. В процессе обработки SpecifyFilter поставщик назначения передает фильтры функции ответного вызова FilterRequestCallback, которая определена в Sync Framework.

  3. В процессе обработки FilterRequestCallbackSync Framework вызывает метод TryAddFilter интерфейса ISupportFilteredSync, реализованный поставщиком источника. Если поставщик источника не поддерживает запрошенный фильтр, то поставщик назначения может продолжить запрашивать фильтры до тех пор, пока не найдет поддерживаемый.

Как только согласование фильтра успешно завершено, поставщик источника пользуется им для определения элементов, которые необходимо включить в процесс перечисления изменений.

Примечания по реализации. Реализация этого метода может производить вызовы FilterRequestCallback с разными фильтрами до тех пор, пока не будет найден фильтр, поддерживаемый как поставщиком источника, так и поставщиком назначения. Поставщик источника указывает, что не поддерживает фильтр, возвращая значение false в ответ на вызов TryAddFilter.

Пример

В следующем примере реализуется метод SpecifyFilter. Первый отслеживаемый фильтр, запрошенный в качестве фильтра для синхронизации. Если поставщик источника запретил запрошенный фильтр, то вызывается исключение.

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

См. также

Справочник

Интерфейс IRequestFilteredSync
Элементы IRequestFilteredSync
Пространство имен Microsoft.Synchronization