現在、YamlDotNet ライブラリを使用して、YAML ドキュメントstring
をスカラー値やマッピングなどの標準の .NET オブジェクトに逆シリアル化しようとしています。Dictionary<string, object>
そのクラスが最良の選択肢だと思いDeserializer
ますが、その出力はobject
andDictionary<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;
}
}
そしてそれを次のように使用します:
Deserializer deserializer = new Deserializer();
deserializer.TypeResolvers.Add(new MyNodeTypeResolver());
var res = deserializer.Deserialize(input);
しかし、それは何の効果もないようです。によって生成されるオブジェクトのタイプを変更する方法はありますDeserializer
か?