设计:C#文本解析器

时间:2011-07-12 09:56:07

标签: c# parsing text

我正在为我的项目创建一个简单的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; }
}

现在我正在考虑使用接口在解析时调用特定对象,但还不确定如何完全执行它。

还有其他想法或建议吗? :)

1 个答案:

答案 0 :(得分:0)

再一次,为什么你没有像Yaml这样的现有库使用.net?

更多: http://yaml-net-parser.sourceforge.net/