次の方法で共有


FilterChange クラス

項目がフィルターに追加されたりフィルターから除外されたりするような変更に関する情報を表します。

名前空間: Microsoft.Synchronization
アセンブリ: Microsoft.Synchronization (microsoft.synchronization.dll 内)

構文

'宣言
Public Class FilterChange
'使用
Dim instance As FilterChange
public class FilterChange
public ref class FilterChange
public class FilterChange
public class FilterChange

解説

変更によって、項目がフィルターに追加されたり、フィルターから除外されたりすることがあります。たとえば、項目に state フィールドが含まれており、state フィールドが "Washington" である項目をフィルターによって除外するとします。state フィールドが "Washington" である項目が変更されて state フィールドが "Oregon" になると、その項目はフィルターに追加されます。

このオブジェクトのプロパティは、次の表に従って解釈できます。

IsMoveIn の値

MoveVersion の値

意味

true

項目の作成バージョン。

項目は作成されてからずっとフィルターに含まれています。

true

項目の作成バージョン以外のバージョン。

項目は、バージョンが MoveVersion である変更が行われたときにフィルターに追加されました。

false

0 に設定。

項目は、フィルターの追跡が開始されてからフィルターに含まれていません。

false

0 以外のバージョン。

項目は、バージョンが MoveVersion である変更が行われたときにフィルターから除外されました。

次の例では、フィルターに関連する項目の移動バージョンが同期先ナレッジに含まれていない場合に、フィルター変更情報を ItemChange オブジェクトに追加します。

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

継承階層

System.Object
  Microsoft.Synchronization.FilterChange

スレッド セーフ

この型の public static (Visual Basic では Shared ) メンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

参照

リファレンス

FilterChange メンバー
Microsoft.Synchronization 名前空間