public IEnumerable <T> GetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new() { MailboxDataProvider mailboxDataProvider = (MailboxDataProvider)session; if (mailboxDataProvider == null) { throw new ArgumentNullException("session"); } if (this.objectIdentifier == null) { QueryFilter queryFilter = new TextFilter(SearchObjectBaseSchema.Name, this.identifier, this.IsFullyQualified ? MatchOptions.FullString : MatchOptions.Prefix, MatchFlags.IgnoreCase); if (this.IsFullyQualified) { notFoundReason = new LocalizedString?(Strings.ErrorManagementObjectNotFound(this.ToString())); } else { notFoundReason = null; } if (optionalData != null && optionalData.AdditionalFilter != null) { queryFilter = QueryFilter.AndTogether(new QueryFilter[] { queryFilter, optionalData.AdditionalFilter }); } return(mailboxDataProvider.FindPaged <T>(queryFilter, rootId, false, null, 0)); } notFoundReason = new LocalizedString?(Strings.ErrorManagementObjectNotFound(this.ToString())); SearchObjectId identity = this.objectIdentifier; if (optionalData != null && optionalData.AdditionalFilter != null) { throw new NotSupportedException("Supplying Additional Filters and an ObjectIdentifier is not currently supported by this IdParameter."); } int num = this.identifier.IndexOf('\\'); if (num == -1 || string.IsNullOrEmpty(this.identifier.Substring(0, num))) { SearchObjectBase searchObjectBase = ((default(T) == null) ? Activator.CreateInstance <T>() : default(T)) as SearchObjectBase; if (searchObjectBase == null) { throw new ArgumentException("The generic type must be a SearchObjectBase"); } identity = new SearchObjectId(identity, searchObjectBase.ObjectType); } T t = (T)((object)mailboxDataProvider.Read <T>(identity)); if (t != null) { return(new T[] { t }); } return(new T[0]); }