.NET Console TextWriter that Understands Indent/Unindent/IndentLevel

System.CodeDom.Compiler.IndentedTextWriter

This is built in to the .Net Framework in system.dll, but it is not super-robust. It should work under constrained useage (like not having a newline character in a string).

    static void Main(string[] args)
    {
        using (System.CodeDom.Compiler.IndentedTextWriter writer = new System.CodeDom.Compiler.IndentedTextWriter(Console.Out, "    "))
        {
            Console.SetOut(writer);
            writer.Indent = 0;
            writer.WriteLine("test");
            writer.Indent = 1;
            writer.WriteLine("What happens\nif there are line-\nbreak in the middle?");
            writer.Indent = 2;
            writer.WriteLine("another test");
            writer.Indent = 3;
            writer.WriteLine("and another test");
            writer.Indent = 0;
            writer.WriteLine("hello");
        }
        Console.ReadLine();
    }

Leave a Comment