protected internal ADGenericPagedReader(IDirectorySession session, ADObjectId rootId, QueryScope scope, QueryFilter filter, SortBy sortBy, int pageSize, IEnumerable <PropertyDefinition> properties, bool skipCheckVirtualIndex) : base(session, rootId, scope, sortBy) { if (!typeof(ADRawEntry).IsAssignableFrom(typeof(TResult))) { throw new InvalidOperationException(DirectoryStrings.ErrorMustBeADRawEntry); } if (pageSize < 0 || pageSize > 10000) { throw new ArgumentOutOfRangeException("pageSize", pageSize, string.Format("pageSize should be between 1 and {0} or 0 to use the default page size: {1}", 10000, ADGenericPagedReader <TResult> .DefaultPageSize)); } this.dummyInstance = (ADRawEntry)((object)((default(TResult) == null) ? Activator.CreateInstance <TResult>() : default(TResult))); QueryFilter filter2 = filter; ConfigScopes configScopes; ADScope readScope = session.GetReadScope(rootId, this.dummyInstance, false, out configScopes); ADObject adobject; string[] ldapAttributes; base.Session.GetSchemaAndApplyFilter(this.dummyInstance, readScope, out adobject, out ldapAttributes, ref filter, ref properties); ADDataSession addataSession = base.Session as ADDataSession; if (addataSession != null) { addataSession.UpdateFilterforInactiveMailboxSearch(this.dummyInstance, ref filter); } base.LdapAttributes = ldapAttributes; this.pageSize = ((pageSize == 0) ? ADGenericPagedReader <TResult> .DefaultPageSize : pageSize); this.retrievedAllData = null; this.properties = properties; session.CheckFilterForUnsafeIdentity(filter2); base.LdapFilter = LdapFilterBuilder.LdapFilterFromQueryFilter(filter, skipCheckVirtualIndex, base.Session.SessionSettings.PartitionSoftLinkMode, base.Session.SessionSettings.IsTenantScoped); this.skipNonUniqueResults = (session is IConfigurationSession); }