NLog.Conditions.ConditionRelationalExpression.PromoteTypes C# (CSharp) Méthode

PromoteTypes() private static méthode

private static PromoteTypes ( object &val1, object &val2 ) : void
val1 object
val2 object
Résultat void
        private static void PromoteTypes(ref object val1, ref object val2)
        {
            if (val1 == null || val2 == null)
            {
                return;
            }

            if (val1.GetType() == val2.GetType())
            {
                return;
            }

            if (val1 is DateTime || val2 is DateTime)
            {
                val1 = Convert.ToDateTime(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToDateTime(val2, CultureInfo.InvariantCulture);
                return;
            }

            if (val1 is string || val2 is string)
            {
                val1 = Convert.ToString(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToString(val2, CultureInfo.InvariantCulture);
                return;
            }

            if (val1 is double || val2 is double)
            {
                val1 = Convert.ToDouble(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToDouble(val2, CultureInfo.InvariantCulture);
                return;
            }

            if (val1 is float || val2 is float)
            {
                val1 = Convert.ToSingle(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToSingle(val2, CultureInfo.InvariantCulture);
                return;
            }

            if (val1 is decimal || val2 is decimal)
            {
                val1 = Convert.ToDecimal(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToDecimal(val2, CultureInfo.InvariantCulture);
                return;
            }

            if (val1 is long || val2 is long)
            {
                val1 = Convert.ToInt64(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToInt64(val2, CultureInfo.InvariantCulture);
                return;
            }

            if (val1 is int || val2 is int)
            {
                val1 = Convert.ToInt32(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToInt32(val2, CultureInfo.InvariantCulture);
                return;
            }

            if (val1 is bool || val2 is bool)
            {
                val1 = Convert.ToBoolean(val1, CultureInfo.InvariantCulture);
                val2 = Convert.ToBoolean(val2, CultureInfo.InvariantCulture);
                return;
            }

            throw new ConditionEvaluationException("Cannot find common type for '" + val1.GetType().Name + "' and '" + val2.GetType().Name + "'.");
        }