protected override void VisitGreaterOrEqual(LdapGreaterOrEqualFilter filter)
        {
            base.VisitGreaterOrEqual(filter);
            if (filter.Assertion.Attribute.Options.Count > 0)
            {
                _inner.Push(Expression.Constant(false));
                return;
            }

            var attribute = filter.Assertion.Attribute.Oid;
            var property  = GetProperty(attribute);

            if (property == null)
            {
                _inner.Push(Expression.Constant(false));
                return;
            }

            var value = Encoding.UTF8.GetString(filter.Assertion.Value.Span);

            if (!property.Type.IsAssignableFrom(typeof(string)))
            {
                throw new NotImplementedException("we have only string properties");
            }
            var compare = Expression.Call(null, _stringCompare, property, Expression.Constant(value));

            _inner.Push(Expression.GreaterThanOrEqual(compare, Expression.Constant(0)));
        }
示例#2
0
 protected virtual void VisitGreaterOrEqual(LdapGreaterOrEqualFilter filter)
 {
 }