Esempio n. 1
0
        internal static object DoConversionFrom(TypeConverter converter, object value)
        {
            object obj = value;

            try
            {
                if (converter != null)
                {
                    if (value != null)
                    {
                        if (converter.CanConvertFrom(value.GetType()))
                        {
                            obj = converter.ConvertFrom((ITypeDescriptorContext)null, CultureInfo.InvariantCulture, value);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (!TypeConverterHelper.ShouldEatException(ex))
                {
                    throw;
                }
            }
            return(obj);
        }
Esempio n. 2
0
        /// <summary>
        /// Mit dieser Methode werden Operanden ausgewertet.
        ///
        /// </summary>
        /// <param name="leftOperand">Linker Operand aus der "LeftOperand"-Eigenschaft.</param><param name="operatorType">Operator aus "Operator"-Eigenschaft.</param><param name="rightOperand">Rechter Operand aus der "RightOperand"-Eigenschaft.</param>
        /// <returns>
        /// Gibt "true" zurück, wenn die Bedingung erfüllt ist, gibt andernfalls "false" zurück.
        /// </returns>
        internal static bool EvaluateImpl(object leftOperand, ComparisonConditionType operatorType, object rightOperand)
        {
            var flag = false;

            if (leftOperand != null)
            {
                var type = leftOperand.GetType();
                if (rightOperand != null)
                {
                    rightOperand = TypeConverterHelper.DoConversionFrom(TypeConverterHelper.GetTypeConverter(type), rightOperand);
                }
            }
            var leftOperand1  = leftOperand as IComparable;
            var rightOperand1 = rightOperand as IComparable;

            if (leftOperand1 != null && rightOperand1 != null)
            {
                return(EvaluateComparable(leftOperand1, operatorType, rightOperand1));
            }
            switch (operatorType)
            {
            case ComparisonConditionType.Equal:
                flag = Equals(leftOperand, rightOperand);
                break;

            case ComparisonConditionType.NotEqual:
                flag = !Equals(leftOperand, rightOperand);
                break;

            case ComparisonConditionType.LessThan:
            case ComparisonConditionType.LessThanOrEqual:
            case ComparisonConditionType.GreaterThan:
            case ComparisonConditionType.GreaterThanOrEqual:
                if (leftOperand1 == null && rightOperand1 == null)
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "LeftOperand of type {1} and RightOperand of type {0} cannot be used with operator {2}."
                                                              , leftOperand != null ? (object)leftOperand.GetType().Name : (object)"null"
                                                              , rightOperand != null ? (object)rightOperand.GetType().Name : (object)"null"
                                                              , (object)((object)operatorType).ToString()));
                }
                else if (leftOperand1 == null)
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "LeftOperand of type {0} cannot be used with operator {1}.", new object[]
                    {
                        leftOperand != null ? leftOperand.GetType().Name : "null",
                        ((object)operatorType).ToString()
                    }));
                }
                else
                {
                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "RightOperand of type {0} cannot be used with operator {1}.", new object[]
                    {
                        rightOperand != null ? rightOperand.GetType().Name : "null",
                        ((object)operatorType).ToString()
                    }));
                }
            }
            return(flag);
        }
Esempio n. 3
0
        private static bool ShouldEatException(Exception e)
        {
            bool flag = false;

            if (e.InnerException != null)
            {
                flag = flag | TypeConverterHelper.ShouldEatException(e.InnerException);
            }
            return(flag | e is FormatException);
        }