Freigeben über


FilterChange-Klasse

Stellt Informationen zu einer Änderung dar, durch die ein Element in einen oder aus einem Filter verschoben wird.

Namespace: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (in microsoft.synchronization.dll)

Syntax

'Declaration
Public Class FilterChange
'Usage
Dim instance As FilterChange
public class FilterChange
public ref class FilterChange
public class FilterChange
public class FilterChange

Hinweise

Durch eine Änderung kann ein Element in einen oder aus einem Filter verschoben werden. Elemente enthalten z. B. ein state-Feld, und ein Filter schließt jedes Element aus, dessen state-Feld gleich „Washington“ ist. Wenn ein Element mit state gleich „Washington“ geändert wird, sodass state gleich „Oregon“ ist, wird das Element in den Filter verschoben.

Die Eigenschaften dieses Objekts können anhand der folgenden Tabelle interpretiert werden.

Wert von IsMoveIn

Wert von MoveVersion

Bedeutung

true

Die Erstellungsversion des Elements.

Das Element ist seit seiner Erstellung im Filter.

true

Eine Version, die sich von der Erstellungsversion des Elements unterscheidet.

Das Element wurde in den Filter verschoben, als die Änderung an der Version von MoveVersion vorgenommen wurde.

false

Legen Sie diesen Wert auf „0“ fest.

Das Element ist seit Beginn der Filternachverfolgung nicht im Filter enthalten.

false

Eine andere Version als „0“.

Das Element wurde aus dem Filter verschoben, als die Änderung an der Version von MoveVersion vorgenommen wurde.

Beispiel

Im folgenden Beispiel werden Filteränderungsinformationen zu einem ItemChange-Objekt hinzugefügt, wenn die verschobene Version für das Element in Relation zum Filter nicht im Zielwissen enthalten ist.

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

Vererbungshierarchie

System.Object
  Microsoft.Synchronization.FilterChange

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Verweis

FilterChange-Member
Microsoft.Synchronization-Namespace