Ejemplo n.º 1
0
        private static bool MatchPredicate(PackageItem package, BinaryPredicate predicate)
        {
            var expr1 = predicate.Operand1 as Expression;

            switch (predicate.Operator)
            {
                case Operator.Or:
                    return Match(package, predicate.Operand1) || Match(package, predicate.Operand2);
                case Operator.And:
                    return Match(package, predicate.Operand1) && Match(package, predicate.Operand2);
                case Operator.Equal:
                case Operator.NotEqual:
                case Operator.GreaterThan:
                case Operator.LessThan:
                case Operator.GreaterThanOrEqual:
                case Operator.LessThanOrEqual:
                    if (expr1 != null)
                    {
                        switch (expr1.Value)
                        {
                            case "version": return MatchVersion(package, predicate);
                        }
                    }
                    break;
            }

            return true;
        }
Ejemplo n.º 2
0
        private static bool MatchVersion(PackageItem package, BinaryPredicate predicate)
        {
            var expr2 = predicate.Operand2 as Expression;

            if (expr2 != null)
            {
                try
                {
                    switch (predicate.Operator)
                    {
                        case Operator.Equal: return AsVersion(package.PackageIdentity.Version) == AsVersion(expr2.Value);
                        case Operator.NotEqual: return AsVersion(package.PackageIdentity.Version) != AsVersion(expr2.Value);
                        case Operator.GreaterThan: return AsVersion(package.PackageIdentity.Version) > AsVersion(expr2.Value);
                        case Operator.LessThan: return AsVersion(package.PackageIdentity.Version) < AsVersion(expr2.Value);
                        case Operator.GreaterThanOrEqual: return AsVersion(package.PackageIdentity.Version) >= AsVersion(expr2.Value);
                        case Operator.LessThanOrEqual: return AsVersion(package.PackageIdentity.Version) <= AsVersion(expr2.Value);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }

            return true;
        }