Как преобразовать в строку последовательность вызываемых вложенных классов?
Если это классы действительно вложенные, а не как ты тут описался "унаследованные", то через рефлексию можно получить полное название класса и оно будет похоже на namespace.MainClass+ChildClass1+ChildClass2

Но имхо, ты создаёшь себе проблемы на пустом месте.
В вашем случае вам нужен словарь. Например:
Dictionary<string, Action> index = new Dictionary<string, Action>();
index["a.b.c"] = () => Console.WriteLine("a.b.c");
index["a.b.c"]();
Если хочется именно через классы - то вместо делегата легко можно использовать экземпляр любого нужного класса. Если хочется вот прям совсем красиво и именно дерево, то в классе опять же создаете словарь и перегружаете индексатор, чтобы он разбивал строку по разделителям и осуществлял поиск дальше вглубь дерева. И тогда можно будет делать что-то типа такого:
var tree = new MyTree() { 
    {
        "a",  new MyTree() { 					
            {
                "b", new MyTree(() => Console.WriteLine("a.b.c"))
            }					
        }
    }
}
tree["a.b"]();
И да, как уже сказали ранее - можно и через рефлексию, но зачем, если есть словари и они проще и работают из коробки?