다음을 통해 공유


IRequestFilteredSync.SpecifyFilter 메서드

파생 클래스에서 재정의되면 변경 내용을 열거하는 동안 원본 공급자에 사용되는 필터를 결정합니다.

네임스페이스: Microsoft.Synchronization
어셈블리: microsoft.synchronization.dll의 Microsoft.Synchronization

구문

‘선언
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에서는 대상 공급자가 구현한 IRequestFilteredSync 인터페이스의 SpecifyFilter 메서드를 호출하여 필터 결정을 시작합니다.

  2. SpecifyFilter를 처리하는 동안 대상 공급자가 Sync Framework에서 지정한 FilterRequestCallback에 필터를 전달합니다.

  3. FilterRequestCallback을 처리하는 동안 Sync Framework에서는 원본 공급자가 구현한 ISupportFilteredSync 인터페이스의 TryAddFilter 메서드를 호출합니다. 원본 공급자에 지원되지 않는 필터를 요청한 경우 대상 공급자는 지원되는 필터를 찾을 때까지 계속 필터를 요청할 수 있습니다.

필터가 결정되면 원본 공급자에서 이 필터를 사용하여 변경 내용 열거 작업에 포함할 항목을 지정합니다.

구현자를 위한 정보: 이 메서드를 구현하면 대상 공급자와 원본 공급자에서 모두 지원되는 필터를 찾을 때까지 여러 가지 필터를 사용하여 FilterRequestCallback을 계속 호출할 수 있습니다. 원본 공급자는 TryAddFilter 호출에 대한 응답으로 false를 반환하여 필터를 지원하지 않음을 나타냅니다.

예제

다음 예제에서는 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 네임스페이스