Я нахожусь в процессе создания простого синтаксического анализатора Yaml для своего проекта, и я действительно хочу узнать о наилучшем способе проектирования способа считывания данных в объекты и наоборот.
Прежде всего, я не хочу использовать отражение для сериализации / десериализации, потому что оно медленное и недостаточно настраиваемое для моих нужд.
В настоящее время я использую простой класс для хранения всех общих данных для синтаксического анализатора / записи:
public class YamlObject
{
public string Name { get; set; }
public string Value { get; set; }
public List<YamlObject> SubObjects { get; set; }
}
Но это не очень быстро, потому что после получения всех объектов YamlOb я должен снова проанализировать их, чтобы сохранить их в определенных объектах. Необходимость циклически проходить по списку, чтобы найти список с подходящим именем, также довольно медленная.
EDIT:
Пример Yaml:
terrain:
- prefab: Lava1
- position: 0,0,2000
prefab: Lava1_Rocks1
Мои объекты:
public class Terrain
{
public Vector3 Position { get; set; }
public Vector3 Rotation { get; set; }
public string Prefab { get; set; }
}
public class Mission
{
public Terrain[] TerrainData { get; set; }
}
Теперь я думал об использовании интерфейса для вызова конкретного объекта при разборе, но пока не уверен, как именно это сделать.
Есть еще идеи или советы? :)