ItemChange.AddFilterChange-Methode
Fügt Informationen hinzu, die angeben, ob das Element durch diese Änderung in einen oder aus einem angegebenen Filter verschoben wird.
Namespace: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (in microsoft.synchronization.dll)
Syntax
'Declaration
Public Sub AddFilterChange ( _
filterKey As UInteger, _
filterChange As FilterChange _
)
'Usage
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
)
Parameter
- filterKey
Der Schlüssel des Filters, in den oder aus dem das Element verschoben wird.
- filterChange
Informationen zur Änderung im Verhältnis zum von filterKey angegebenen Filter.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Ein erforderlicher Parameter ist NULL. |
|
filterKey ist ein ungültiger Wert. |
|
Informationen zur Filteränderung sind für filterKey bereits vorhanden. |
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.
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);
}
}
}
Siehe auch
Verweis
ItemChange-Klasse
ItemChange-Member
Microsoft.Synchronization-Namespace