小编mav*_*sic的帖子

将YAML反序列化为自定义类型

我目前正在尝试使用YamlDotNet库将YAML文档反序列化为标准.NET对象,例如string用于标量值和Dictionary<string, object>映射。

我猜Deserializer该类是最好的选择,但其输出是objectDictionary<object>。我试过实现这样的自定义INodeTypeResolver

class MyNodeTypeResolver : INodeTypeResolver
{
    bool INodeTypeResolver.Resolve(NodeEvent nodeEvent, ref Type currentType)
    {
        if (currentType == typeof(object))
        {
            if (nodeEvent is SequenceStart)
                currentType = typeof(List<object>);
            else if (nodeEvent is MappingStart)
                currentType = typeof(Dictionary<string, object>);
            else if (nodeEvent is Scalar)
                currentType = typeof(string);

            return true;
        }

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

Deserializer deserializer = new Deserializer();
deserializer.TypeResolvers.Add(new MyNodeTypeResolver());
var res = deserializer.Deserialize(input);
Run Code Online (Sandbox Code Playgroud)

但这似乎没有任何效果。有什么方法可以改变产生的对象的类型Deserializer吗?

c# yamldotnet

6
推荐指数
1
解决办法
1541
查看次数

标签 统计

c# ×1

yamldotnet ×1