Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }