protected override object EvaluationInternal(IDictionary<object, object> parameters)
{
var left = LeftOprand.Evaluation(parameters);
var right = rightOprand.Evaluation(parameters);
if (left == ExpressionConstants.Unevaluatable || right == ExpressionConstants.Unevaluatable)
{
return ExpressionConstants.Unevaluatable;
}
if (left == null)
{
return right == null ? LiteralBoolean.True : LiteralBoolean.False;
}
if (right == null)
{
return LiteralBoolean.False;
}
if (left is Number || right is Number)
{
var pair = ExprEvalUtils.ConvertNum2SameLevel(left, right);
left = pair.Key;
right = pair.Value;
}
return left.Equals(right) ? LiteralBoolean.True : LiteralBoolean.False;
}
}