Condividi tramite


Classe FilterChange

Rappresenta le informazioni su una modifica che determina lo spostamento di un elemento all'interno o all'esterno di un filtro.

Spazio dei nomi: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (in microsoft.synchronization.dll)

Sintassi

'Dichiarazione
Public Class FilterChange
'Utilizzo
Dim instance As FilterChange
public class FilterChange
public ref class FilterChange
public class FilterChange
public class FilterChange

Osservazioni

Una modifica può determinare lo spostamento di un elemento all'interno o all'esterno di un filtro. Ad esempio, gli elementi contengono un campo state e un filtro esclude qualsiasi elemento con il relativo campo state uguale a "Washington". Quando un elemento con state impostato su "Washington" viene modificato in modo che state sia uguale a "Oregon", l'elemento si sposta nel filtro.

Le proprietà di questo oggetto possono essere interpretate in base alla tabella seguente.

Valore diIsMoveIn

Valore diMoveVersion

Significato

true

Versione di creazione dell'elemento.

L'elemento è presente nel filtro da quando è stato creato.

true

Versione diversa dalla versione di creazione dell'elemento.

L'elemento si è spostato nel filtro quando è stata apportata la modifica con la versione di MoveVersion.

false

Impostato su 0.

L'elemento non è stato nel filtro da quando è iniziato il rilevamento del filtro.

false

Versione diversa da 0.

Elemento spostato all'esterno del filtro quando è stata apportata la modifica con la versione MoveVersion.

Esempio

Nell'esempio seguente vengono aggiunte informazioni sulle modifiche del filtro a un oggetto ItemChange quando la versione di trasferimento per l'elemento in relazione al filtro non è contenuta nella conoscenza di destinazione.

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

Gerarchia di ereditarietà

System.Object
  Microsoft.Synchronization.FilterChange

Thread Safety

Tutti i membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread safe. I membri di istanza non hanno garanzia di essere thread safe.

Vedere anche

Riferimento

Membri FilterChange
Spazio dei nomi Microsoft.Synchronization