public static void SwitchBasedPrint(ReflectiveExpression e, StringBuilder sb) { if (e is ReflectiveDoubleExpression de) { sb.Append(de.Value); } else if (e is ReflectiveAdditionExpression ae) { sb.Append("("); SwitchBasedPrint(ae.Left, sb); sb.Append("+"); SwitchBasedPrint(ae.Right, sb); sb.Append(")"); } }
public static void LookupBasedPrint(ReflectiveExpression e, StringBuilder sb) { Actions[e.GetType()].Invoke(e, sb); }
public ReflectiveAdditionExpression(ReflectiveExpression left, ReflectiveExpression right) { Left = left ?? throw new ArgumentNullException(nameof(left)); Right = right ?? throw new ArgumentNullException(nameof(right)); }