다음을 통해 공유


ISupportFilteredSync.TryAddFilter 메서드

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

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

구문

‘선언
Function TryAddFilter ( _
    filter As Object, _
    filteringType As FilteringType _
) As Boolean
‘사용 방법
Dim instance As ISupportFilteredSync
Dim filter As Object
Dim filteringType As FilteringType
Dim returnValue As Boolean

returnValue = instance.TryAddFilter(filter, filteringType)
bool TryAddFilter (
    Object filter,
    FilteringType filteringType
)
bool TryAddFilter (
    Object^ filter, 
    FilteringType filteringType
)
boolean TryAddFilter (
    Object filter, 
    FilteringType filteringType
)
function TryAddFilter (
    filter : Object, 
    filteringType : FilteringType
) : boolean

매개 변수

  • filter
    원본 공급자가 변경 내용 열거에 사용하는 필터입니다.
  • filteringType
    필터링된 동기화 중에 일괄 변경 내용에 포함되는 정보의 유형을 나타냅니다.

반환 값

filter로 지정된 필터가 지원되면 true이고, 그렇지 않으면 false입니다.

주의

다음 단계를 통해 필터가 결정됩니다.

  1. 원본 공급자가 변경 내용 열거 작업을 시작하기 전에 Sync Framework에서는 대상 공급자가 구현한 IRequestFilteredSync 인터페이스의 SpecifyFilter 메서드를 호출하여 필터 결정을 시작합니다.

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

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

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

구현자를 위한 정보: 이 메서드를 구현하면 filter 및 filteringType으로 지정된 필터를 검사하고 false를 반환하여 필터가 지원되지 않음을 나타낼 수 있습니다. 대상 공급자는 지원되는 필터를 찾을 때까지 다른 필터를 요청할 수 있습니다.

예제

다음 예제에서는 TryAddFilter를 구현합니다. 복제본에서 추적하는 필터만 동기화에 사용됩니다.

Public Function TryAddFilter(ByVal filter As Object, ByVal filteringType As FilteringType) As Boolean Implements ISupportFilteredSync.TryAddFilter
    _filterForSync = Nothing

    ' The filter must be tracked by both replicas.
    For filterKey As Integer = 0 To _filterKeyMap.Count - 1
        If _filterKeyMap(filterKey).IsIdentical(DirectCast(filter, ISyncFilter)) Then
            _filterForSync = DirectCast(_filterKeyMap(filterKey), AddressFilter)
            _filteringType = filteringType
            Exit For
        End If
    Next

    Return (_filterForSync IsNot Nothing)
End Function
public bool TryAddFilter(object filter, FilteringType filteringType)
{
    _filterForSync = null;

    // The filter must be tracked by both replicas.
    for (int filterKey = 0; filterKey < _filterKeyMap.Count; filterKey++)
    {
        if (_filterKeyMap[filterKey].IsIdentical((ISyncFilter)filter))
        {
            _filterForSync = (AddressFilter)_filterKeyMap[filterKey];
            _filteringType = filteringType;
            break;
        }
    }

    return (null != _filterForSync);
}

참고 항목

참조

ISupportFilteredSync 인터페이스
ISupportFilteredSync 멤버
Microsoft.Synchronization 네임스페이스