在衍生類別中覆寫時,會設定來源提供者用於變更列舉的篩選。
命名空間: Microsoft.Synchronization
組件: Microsoft.Synchronization (在 microsoft.synchronization.dll)
語法
'宣告
Function TryAddFilter ( _
filter As Object, _
filteringType As FilteringType _
) As Boolean
'用途
Dim instance As ISupportFilteredSync
Dim filter As Object
Dim filteringType As FilteringType
Dim returnValue As Boolean
returnValue = instance.TryAddFilter(filter, filteringType)
bool TryAddFilter (
Object filter,
FilteringType filteringType
)
bool TryAddFilter (
Object^ filter,
FilteringType filteringType
)
boolean TryAddFilter (
Object filter,
FilteringType filteringType
)
function TryAddFilter (
filter : Object,
filteringType : FilteringType
) : boolean
參數
- filter
來源提供者用於變更列舉的篩選。
- filteringType
表示在篩選同步處理期間變更批次中所包含的資訊類型。
傳回值
如果支援 filter 所指定的篩選,則為 True,否則為 false。
備註
篩選交涉是使用下列步驟所達成:
在來源提供者開始列舉變更之前,Sync Framework 會呼叫目的地提供者所實作之 IRequestFilteredSync 介面的 SpecifyFilter 方法,藉以啟動篩選交涉。
在處理 SpecifyFilter 期間,目的地提供者會將篩選傳遞給 Sync Framework 所指定的 FilterRequestCallback。
在處理 FilterRequestCallback 期間,Sync Framework 會呼叫來源提供者所實作之 ISupportFilteredSync 介面的 TryAddFilter 方法。如果來源提供者不支援要求的篩選,目的地提供者就可以繼續要求篩選,直到它找到支援的篩選為止。
成功交涉篩選之後,來源提供者就會用它來判斷要在變更列舉期間包含哪些項目。
實作器注意事項: 這個方法的實作可以檢查 filter 和 filteringType 所指定的篩選,並且傳回 false 表示不支援篩選。然後,目的地提供者就可以要求不同的篩選,直到找到的支援篩選為止。
範例
下列範例會實作 TryAddFilter。此篩選必須是複寫所追蹤的篩選才會使用於同步處理。
Public Function TryAddFilter(ByVal filter As Object, ByVal filteringType As FilteringType) As Boolean Implements ISupportFilteredSync.TryAddFilter
_filterForSync = Nothing
' The filter must be tracked by both replicas.
For filterKey As Integer = 0 To _filterKeyMap.Count - 1
If _filterKeyMap(filterKey).IsIdentical(DirectCast(filter, ISyncFilter)) Then
_filterForSync = DirectCast(_filterKeyMap(filterKey), AddressFilter)
_filteringType = filteringType
Exit For
End If
Next
Return (_filterForSync IsNot Nothing)
End Function
public bool TryAddFilter(object filter, FilteringType filteringType)
{
_filterForSync = null;
// The filter must be tracked by both replicas.
for (int filterKey = 0; filterKey < _filterKeyMap.Count; filterKey++)
{
if (_filterKeyMap[filterKey].IsIdentical((ISyncFilter)filter))
{
_filterForSync = (AddressFilter)_filterKeyMap[filterKey];
_filteringType = filteringType;
break;
}
}
return (null != _filterForSync);
}
請參閱
參考
ISupportFilteredSync 介面
ISupportFilteredSync 成員
Microsoft.Synchronization 命名空間