Судя по структуре, вы можете начать с бинарного считывателя и начать с него. На сайте вы можете найти маркировку
Начало документа "---"
Индивидуальная запись "-"
Имя свойства и значение "{property_name}": {value}
массивы начинаются с "[]" рядом со свойством "{property_name}": []
Я бы начал с анализа файла, а затем использовал бы динамический тип .net для построения модели во время выполнения, добавляя каждое новое свойство по мере их появления.
Оттуда у вас должна быть общая коллекция вашего динамического типа, и вы должны иметь возможность запрашивать проанализированный файл yml, используя lambda или linq