public static void WriteTo(GenericDictionary dictionary, MetadataWriter metadata) { foreach (string key in dictionary.Keys) { object value = dictionary.Get <object>(key); metadata.GetType().InvokeMember("Put", BindingFlags.InvokeMethod, Type.DefaultBinder, metadata, new object[] { key, value }); } }
public static void ReadFrom(MetadataReader metadata, GenericDictionary dictionary) { foreach (string key in metadata.Keys) { Type myType = metadata.GetValueType(key); MethodInfo method = dictionary.GetType().GetMethod("Put"); method = method.MakeGenericMethod(myType); MethodInfo metaMethod = metadata.GetType().GetMethod("Get"); metaMethod = metaMethod.MakeGenericMethod(myType); object value = metaMethod.Invoke(metadata, new object[] { key }); method.Invoke(dictionary, new object[] { key, value }); } }