public static object FromObjectDictionary(this Dictionary <string, object> values, Type type) { bool flag = type == typeof(Dictionary <string, object>); if (flag) { return((object)flag); } PlatformExtensions.ObjectDictionaryDefinition dictionaryDefinition; if (!PlatformExtensions.toObjectMapCache.TryGetValue(type, out dictionaryDefinition)) { PlatformExtensions.toObjectMapCache[type] = dictionaryDefinition = PlatformExtensions.CreateObjectDictionaryDefinition(type); } object instance = type.CreateInstance(); foreach (KeyValuePair <string, object> keyValuePair in values) { PlatformExtensions.ObjectDictionaryFieldDefinition dictionaryFieldDefinition; if (dictionaryDefinition.FieldsMap.TryGetValue(keyValuePair.Key, out dictionaryFieldDefinition) && keyValuePair.Value != null) { dictionaryFieldDefinition.SetValue(instance, keyValuePair.Value); } } return(instance); }
public static Dictionary <string, object> ToObjectDictionary(this object obj) { if (obj == null) { return((Dictionary <string, object>)null); } Dictionary <string, object> dictionary1 = obj as Dictionary <string, object>; if (dictionary1 != null) { return(dictionary1); } IDictionary <string, object> dictionary2 = obj as IDictionary <string, object>; if (dictionary2 != null) { return(new Dictionary <string, object>(dictionary2)); } Type type = obj.GetType(); PlatformExtensions.ObjectDictionaryDefinition dictionaryDefinition; if (!PlatformExtensions.toObjectMapCache.TryGetValue(type, out dictionaryDefinition)) { PlatformExtensions.toObjectMapCache[type] = dictionaryDefinition = PlatformExtensions.CreateObjectDictionaryDefinition(type); } Dictionary <string, object> dictionary3 = new Dictionary <string, object>(); foreach (PlatformExtensions.ObjectDictionaryFieldDefinition field in dictionaryDefinition.Fields) { dictionary3[field.Name] = field.GetValueFn(obj); } return(dictionary3); }