public void Print(AdditionExpression4 ae, StringBuilder sb) { // Dynamic incurs a massive performance hit. // May not be practical in most real world scenarios sb.Append("("); Print((dynamic)ae.Left, sb); sb.Append("+"); Print((dynamic)ae.Right, sb); sb.Append(")"); }
// change to Main to run. public static void none(string[] args) { Expression4 e = new AdditionExpression4( left: new DoubleExpression4(1), right: new AdditionExpression4( left: new DoubleExpression4(2), right: new DoubleExpression4(3))); var ep = new ExpressionPrinter3(); var sb = new StringBuilder(); ep.Print((dynamic)e, sb); Console.WriteLine(sb); }