Expressions/Unary/Logical/NotExpression.cs
using System;
using System.Collections.Generic;
namespace Expressive.Expressions.Unary.Logical
{
internal class NotExpression : UnaryExpressionBase
{
#region Constructors
public NotExpression(IExpression expression) : base(expression)
{
}
#endregion
#region BinaryExpressionBase Members
public override object Evaluate(IDictionary<string, object> variables)
{
var value = this.expression.Evaluate(variables);
switch (value)
{
case null:
return null;
case bool boolValue:
return !boolValue;
default:
return !Convert.ToBoolean(value);
}
}
#endregion
}
}