ItemChange.AddFilterChange メソッド
この変更によって、指定されたフィルターに項目が追加されるか、指定されたフィルターから項目が除外されるかを示す情報を追加します。
名前空間: Microsoft.Synchronization
アセンブリ: Microsoft.Synchronization (microsoft.synchronization.dll 内)
構文
'宣言
Public Sub AddFilterChange ( _
filterKey As UInteger, _
filterChange As FilterChange _
)
'使用
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
)
パラメーター
- filterKey
項目が追加または除外されるフィルターのキーです。
- filterChange
filterKey によって指定されたフィルターに関連する変更の情報です。
例外
例外の種類 | 条件 |
---|---|
必須パラメーターが NULL 参照 (Visual Basic では Nothing) です。 です。 |
|
filterKey が無効な値です。 |
|
filterKey のフィルター変更情報が既に存在しています。 |
解説
変更によって、項目がフィルターに追加されたり、フィルターから除外されたりすることがあります。たとえば、項目に state フィールドが含まれており、state フィールドが "Washington" である項目をフィルターによって除外するとします。state フィールドが "Washington" である項目が変更されて state フィールドが "Oregon" になると、その項目はフィルターに追加されます。
例
次の例では、フィルターに関連する項目の移動バージョンが同期先ナレッジに含まれていない場合に、フィルター変更情報を 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);
}
}
}
参照
リファレンス
ItemChange クラス
ItemChange メンバー
Microsoft.Synchronization 名前空間