Compartilhar via


Método ItemChange.AddFilterChange

Adiciona informações que indicam se essa alteração faz o item ser movido para dentro ou para fora de um filtro especificado.

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

Sintaxe

'Declaração
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
    A chave do filtro no qual o item está entrando ou saindo.
  • filterChange
    Informações sobre a alteração em relação ao filtro especificado por filterKey.

Exceções

Tipo de exceção Condição

ArgumentNullException

Um parâmetro necessário é um referência nula (Nothing no Visual Basic).

ArgumentOutOfRangeException

filterKey é um valor inválido.

SyncInvalidOperationException

Já existem informações de alteração de filtro para filterKey.

Comentários

Uma alteração pode fazer um item ser movido para dentro ou para fora de um filtro. Por exemplo, os itens contêm um campo state e um filtro exclui todos os itens cujo campo state seja igual a "Washington". Quando um item cujo campo state é igual a "Washington" é alterado de forma que state seja igual a "Oregon", o item é movido para dentro do filtro.

Exemplo

O exemplo a seguir adiciona informações de alteração de filtro a um objeto ItemChange quando a versão de movimento do item em relação ao filtro não está contida no conhecimento 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);
        }
    }
}

Consulte também

Referência

Classe ItemChange
Membros ItemChange
Namespace Microsoft.Synchronization