public void Register(ISearchBackend backend) { if (backend is ISearchBackend <TData> typed) { typed.AddSearchFilterCallback(Token, GetSearchFilterFunc, SupportedOperatorTypes); } }
public void Register(ISearchBackend backend) { if (backend is ISearchBackend <TData> typed) { typed.AddSearchDataCallback(GetSearchDataFunc); } }
public void RegisterBackend <TData>(ISearchBackend <TData> backend) { if (null == backend) { throw new ArgumentNullException(nameof(backend)); } // NOTE: This method can overwrite the built in backend which was registered but not another custom backend. if (m_SearchBackends.TryGetValue(typeof(TData), out var instance) && !(instance is SearchBackend <TData>)) { throw new InvalidOperationException($"Failed to register ISearchBackend for Type=[{typeof(TData)}]. Type has already been registered."); } m_SearchBackends[typeof(TData)] = backend; // Register any property based search data. foreach (var searchData in SearchDataProperties) { backend.AddSearchDataProperty(searchData.Path); } // Register any property based filters. foreach (var filter in SearchFilterProperties) { backend.AddSearchFilterProperty(filter.Token, filter.Path, filter.SupportedOperatorTypes); } }
public void Register(ISearchBackend backend) { if (backend is ISearchBackend <TData> typed) { typed.AddSearchFilterCallback(Token, GetSearchFilterFunc, Options); } }
public void UnregisterBackend <TData>(ISearchBackend <TData> backend) { if (null == backend) { throw new ArgumentNullException(nameof(backend)); } if (!m_SearchBackends.TryGetValue(typeof(TData), out var instance)) { throw new InvalidOperationException($"Failed to unregister ISearchBackend for Type=[{typeof(TData)}]. Backend has not been registered."); } if (instance != backend) { throw new InvalidOperationException($"Failed to unregister ISearchBackend for Type=[{typeof(TData)}]. The specified backend does not match the registered instance."); } m_SearchBackends.Remove(typeof(TData)); }