Ejemplo n.º 1
0
        public Control HandleList(string name, object value)
        {
            Debug.WriteLine("List Found! Type: " + value.GetType().ToString() + " Name: " + name.ToString());
            Type type = value.GetType();
            TypeHandlerCallback handler = GetTypeHandler(type.GenericTypeArguments[0]);

            if (handler == null)
            {
                throw new System.NotImplementedException($"{type}");
            }

            //TreeViewItem root = new TreeViewItem() { Header = type };
            TreeViewItem root = new TreeViewItem()
            {
                Header = name
            };

            int i = 0;

            foreach (var element in (IList)value)
            {
                string  elementName   = $"{name}[{i++}]";
                Control propertyField = handler(elementName, element);
                AddItem(root, elementName, propertyField);
            }

            return(root);
        }
Ejemplo n.º 2
0
        // ================
        // = Misc Methods =
        // ================
        public void AddField(TreeViewItem parent, object dataOwner, FieldInfo fieldInfo)
        {
            Type fieldType = fieldInfo.FieldType;
            TypeHandlerCallback handler = GetTypeHandler(fieldType);

            if (handler == null)
            {
                throw new System.NotImplementedException($"{fieldType}, {fieldType.UnderlyingSystemType}");
            }

            Control propertyField = handler(fieldInfo.Name, fieldInfo.GetValue(dataOwner));

            AddItem(parent, fieldInfo.Name, propertyField);
        }
Ejemplo n.º 3
0
        public TypeHandlerCallback GetTypeHandler(Type type)
        {
            TypeHandlerCallback handler = null;

            // explicit types
            TypeHandlers.TryGetValue(type, out handler);
            if (handler != null)
            {
                return(handler);
            }

            // derived types
            TypeHandlers.TryGetValue(type.BaseType, out handler);
            if (handler != null)
            {
                return(handler);
            }

            // generic types
            TypeHandlers.TryGetValue(type.GetGenericTypeDefinition(), out handler);
            return(HandleList);
        }