internal SearchRequestBuilder(string baseObject, SearchRequestScopes scope, SearchRequestDeferAliases deferAlias, int sizeLimit, int timeLimit, bool typesOnly, ICollection <string> attributes)
 {
     _baseObject = baseObject;
     _scope      = scope;
     _deferAlias = deferAlias;
     _sizeLimit  = sizeLimit;
     _timeLimit  = timeLimit;
     _typesOnly  = typesOnly;
     _attributes = attributes;
 }
        public static LdapPacket NewSearchRequest(int messageId, string baseObject, SearchRequestScopes scope, SearchRequestDeferAliases searchRequestDeferAliases, int sizeLimit, int timeLimit, bool typesOnly, ICollection <string> attributes, Action <SearchRequestBuilder> callback)
        {
            var builder = new SearchRequestBuilder(baseObject, scope, searchRequestDeferAliases, sizeLimit, timeLimit, typesOnly, attributes);

            callback(builder);
            var result = new LdapPacket
            {
                MessageId         = new DERInteger(messageId),
                ProtocolOperation = new DERProtocolOperation
                {
                    Operation = builder.Build()
                }
            };

            return(result);
        }