public IEnumerable <T> FindPaged <T>(QueryFilter filter, ObjectId rootId, bool deepSearch, SortBy sortBy, int pageSize) where T : IConfigurable, new() { Type requestIndexEntryType = RequestIndexEntryProvider.ValidateQueryFilter <T>(filter); IEnumerable <IRequestIndexEntry> enumerable = RequestIndexEntryProvider.Handle <IEnumerable <IRequestIndexEntry> >(requestIndexEntryType, (IRequestIndexEntryHandler handler) => handler.FindPaged(this, filter, rootId, deepSearch, sortBy, pageSize)); if (enumerable == null) { return(Array <T> .Empty); } if (typeof(T).IsSubclassOf(typeof(RequestBase))) { return(enumerable.Select(new Func <IRequestIndexEntry, T>(RequestIndexEntryProvider.CreateRequest <T>))); } if (enumerable is IEnumerable <T> ) { return((IEnumerable <T>)enumerable); } MrsTracer.Common.Warning("IndexId not supported by this provider.", new object[0]); return(Array <T> .Empty); }
public IConfigurable[] Find <T>(QueryFilter filter, ObjectId rootId, bool deepSearch, SortBy sortBy) where T : IConfigurable, new() { Type requestIndexEntryType = RequestIndexEntryProvider.ValidateQueryFilter <T>(filter); IRequestIndexEntry[] array = RequestIndexEntryProvider.Handle <IRequestIndexEntry[]>(requestIndexEntryType, (IRequestIndexEntryHandler handler) => handler.Find(this, filter, rootId, deepSearch, sortBy)); if (array == null) { return(Array <IConfigurable> .Empty); } Type typeFromHandle = typeof(T); if (array.GetType().GetElementType() == typeFromHandle) { return(array.Cast <IConfigurable>().ToArray <IConfigurable>()); } if (typeFromHandle.IsSubclassOf(typeof(RequestBase))) { return(array.Select(new Func <IRequestIndexEntry, T>(RequestIndexEntryProvider.CreateRequest <T>)).Cast <IConfigurable>().ToArray <IConfigurable>()); } MrsTracer.Common.Warning("IndexId not supported by this provider.", new object[0]); return(Array <IConfigurable> .Empty); }