다음을 통해 공유


ItemChange.AddFilterChange 메서드

이 변경 내용으로 인해 지정된 필터에서 항목이 포함되는지 아니면 제외되는지를 나타내는 정보를 추가합니다.

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

구문

‘선언
Public Sub AddFilterChange ( _
    filterKey As UInteger, _
    filterChange As FilterChange _
)
‘사용 방법
Dim instance As ItemChange
Dim filterKey As UInteger
Dim filterChange As FilterChange

instance.AddFilterChange(filterKey, filterChange)
public void AddFilterChange (
    uint filterKey,
    FilterChange filterChange
)
public:
void AddFilterChange (
    unsigned int filterKey, 
    FilterChange^ filterChange
)
public void AddFilterChange (
    UInt32 filterKey, 
    FilterChange filterChange
)
public function AddFilterChange (
    filterKey : uint, 
    filterChange : FilterChange
)

매개 변수

  • filterKey
    항목이 포함되거나 제외되는 필터의 키입니다.
  • filterChange
    filterKey로 지정된 필터와 관련된 변경 내용에 대한 정보입니다.

예외

예외 형식 조건

ArgumentNullException

필수 매개 변수가 null 참조(Visual Basic에서는 Nothing)입니다.

ArgumentOutOfRangeException

filterKey가 잘못된 값입니다.

SyncInvalidOperationException

filterKey에 대한 필터 변경 정보가 이미 있습니다.

주의

변경 내용으로 인해 필터에서 항목이 포함되거나 제외될 수 있습니다. 예를 들어 state 필드를 포함하는 항목이 있고, state 필드가 "Washington"인 항목을 제외하는 필터를 가정해 봅니다. state가 "Oregon"이 되도록 state가 "Washington"인 항목을 변경하면 해당 항목은 필터에 포함됩니다.

예제

다음 예제에서는 필터와 관련된 항목의 이동 버전이 대상 정보에 포함되어 있지 않을 경우 필터 변경 정보를 ItemChange 개체에 추가합니다.

Public Sub AddFilterChanges(ByVal filterKeyMap As FilterKeyMap, ByVal itemMeta As ItemMetadata, ByVal destKnowledge As SyncKnowledge, ByVal itemChange As ItemChange)
    For filterKey As Integer = 0 To filterKeyMap.Count - 1
        ' Find the filter in the list of all filters tracked by this replica.
        Dim iFilter As Integer = 0
        While iFilter < _trackedFilters.Count
            If filterKeyMap(filterKey).IsIdentical(_trackedFilters(iFilter)) Then
                Exit While
            End If
            iFilter += 1
        End While

        ' Get the filter information for the item and add it to the ItemChange object.
        Dim moveVersion As SyncVersion = GetMoveVersion(itemMeta, iFilter)

        ' Only return a filter change if the destination knowledge does not contain the version of the 
        ' last move that occurred in relation to the specified filter.
        Dim filterChange As FilterChange = Nothing
        If Not destKnowledge.Contains(ContactReplicaMetadata.ReplicaId, itemMeta.GlobalId, moveVersion) Then
            filterChange = New FilterChange(GetIsInFilter(itemMeta, iFilter), moveVersion)
            itemChange.AddFilterChange(CUInt(filterKey), filterChange)
        End If
    Next
End Sub
public void AddFilterChanges(FilterKeyMap filterKeyMap, ItemMetadata itemMeta, SyncKnowledge destKnowledge,
    ItemChange itemChange)
{
    for (int filterKey = 0; filterKey < filterKeyMap.Count; filterKey++)
    {
        // Find the filter in the list of all filters tracked by this replica.
        int iFilter = 0;
        for (; iFilter < _trackedFilters.Count; iFilter++)
        {
            if (filterKeyMap[filterKey].IsIdentical(_trackedFilters[iFilter]))
            {
                break;
            }
        }

        // Get the filter information for the item and add it to the ItemChange object.
        SyncVersion moveVersion = GetMoveVersion(itemMeta, iFilter);

        // Only return a filter change if the destination knowledge does not contain the version of the 
        // last move that occurred in relation to the specified filter.
        FilterChange filterChange = null;
        if (!destKnowledge.Contains(ContactReplicaMetadata.ReplicaId, itemMeta.GlobalId, moveVersion))
        {
            filterChange = new FilterChange(GetIsInFilter(itemMeta, iFilter), moveVersion);
            itemChange.AddFilterChange((uint)filterKey, filterChange);
        }
    }
}

참고 항목

참조

ItemChange 클래스
ItemChange 멤버
Microsoft.Synchronization 네임스페이스