我正在为我的项目创建一个简单的Yaml解析器,我真的想知道设计它将数据读入对象的方式的最佳方法,反之亦然。
首先,我不想使用反射来序列化/反序列化,因为它的速度很慢,而且无法根据我的需要进行定制。
目前,我使用一个简单的类来存储解析器/编写器的所有通用数据:
public class YamlObject
{
public string Name { get; set; }
public string Value { get; set; }
public List<YamlObject> SubObjects { get; set; }
}
但那并不是很快,因为在获得所有YamlObjects之后我必须再次重新分析它们以将它们存储到特定对象中。必须遍历列表以找到具有匹配名称的列表,这也很慢。
编辑: 示例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; }
}
现在我正在考虑使用接口在解析时调用特定对象,但还不确定如何完全执行它。
还有其他想法或建议吗? :)