我正在发现yaml和yamldotnet。如果这是一个非常基本的问题,很抱歉:
来进一步澄清问题。我有以下yaml文档,它对应于一组小部件:
controls:
- Button:
id: 1
text: Hello Button World
- Label:
id: 2
text: Hello Label World
- TextView:
id: 3
content: >
This is some sample text that will appear
in a text view.我想将它映射到c#中相应的类型层次结构:
class AOPage
{
public IList<AOControl> Controls { get; set; }
}
class AOControl
{
public int Id { get; set;}
}
class AOLabel : AOControl
{
public String Text { get; set;}
}
class AOButton : AOControl
{
public String Text { get; set;}
}
class AOTextView : AOControl
{
public String Contents{ get; set;}
}请注意,这里有一个类似的问题海报:使用自定义类型解析器,这个问题还没有得到回答。
谢谢!
发布于 2014-11-05 14:06:10
如果不指定标记,反序列化程序将使用正在反序列化的对象图中的类型信息。
为了满足您对YamlDotNet的要求,最简单的方法是使用本地标记,比如!!color,然后为该标记注册标记映射:
deserializer.RegisterTagMapping("tag:yaml.org,2002:color", typeof(Color));您可以在DeserializeCustomTags单元测试中看到一个工作示例。
https://stackoverflow.com/questions/26700364
复制相似问题