using System.Collections.Generic;
public static void Main()
var root = new Thing{Id = 1,Name = "Thing1"};
var thing2 = new Thing{Id = 2,Name = "Thing2"};
var thing3 = new Thing{Id = 3,Name = "Thing3"};
root.children.Add(thing2);
thing2.children.Add(thing3);
thing3.children.Add(root);
Console.WriteLine(root.ToString());
public int Id {get; set;}
public string Name {get; set;}
public List<Thing> children{ get; set;}
this.children = new List<Thing>();
public string ToString(int level = 0)
var sb = new StringBuilder();
sb.Append(new String('-',level));
sb.AppendLine($"id:{Id} Name:{Name}");
foreach(var child in children)
sb.Append(child.ToString(level + 1));