private YamlMapping DictionaryToMap(object obj)
{
var accessor = ObjectMemberAccessor.FindFor(obj.GetType());
var iter = ((IEnumerable)obj).GetEnumerator();
var dictionary = map();
Func <object, object> key = null, value = null;
while (iter.MoveNext())
{
if (key == null)
{
var keyvalue = iter.Current.GetType();
var keyprop = keyvalue.GetProperty("Key");
var valueprop = keyvalue.GetProperty("Value");
key = o => keyprop.GetValue(o, new object[0]);
value = o => valueprop.GetValue(o, new object[0]);
}
dictionary.Add(
ObjectToNode(key(iter.Current), accessor.KeyType),
ObjectToNode(value(iter.Current), accessor.ValueType)
);
}
return(dictionary);
}