Share via


ItemChange.AddFilterChange Método

Agrega información que indica si este cambio hace que el elemento entre en un filtro especificado o salga de él.

Espacio de nombres: Microsoft.Synchronization
Ensamblado: Microsoft.Synchronization (en microsoft.synchronization.dll)

Sintaxis

'Declaración
Public Sub AddFilterChange ( _
    filterKey As UInteger, _
    filterChange As FilterChange _
)
'Uso
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
)

Parámetros

  • filterKey
    Clave del filtro en el que el elemento entra o sale.
  • filterChange
    Información sobre el cambio respecto al filtro especificado por filterKey.

Excepciones

Tipo de excepción Condición

ArgumentNullException

Un parámetro requerido es un valor es una referencia nula (Nothing en Visual Basic)..

ArgumentOutOfRangeException

filterKey es un valor no válido.

SyncInvalidOperationException

Ya existe información de cambio de filtro para filterKey.

Notas

Un cambio puede hacer que un elemento entre en un filtro o salga de él. Por ejemplo, los elementos contienen un campo state y un filtro excluye cualquier elemento cuyo campo state sea "Washington". Cuando un elemento con state igual a "Washington" cambia para que state sea "Oregón", el elemento pasa al filtro.

Ejemplo

En el ejemplo siguiente se agrega información de cambio de filtro a un objeto ItemChange cuando la versión de movimiento para el elemento respecto al filtro no está contenida en el conocimiento de destino.

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

Vea también

Referencia

ItemChange Clase
ItemChange Miembros
Microsoft.Synchronization Espacio de nombres