private void DumpBranch(TreeNodeCollection nodes, object o) { Type type = o.GetType(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo fieldInfo in fields) { TreeNode node = nodes.GetOrCreate(fieldInfo.Name); object fieldValue = fieldInfo.GetValue(o); if (fieldValue == null) node.Text = node.Name + ": null"; else if (fieldValue is IConfigurationItem) node.Text = node.Name + ": " + ((IConfigurationItem) fieldValue).Value; else { Type fieldType = fieldInfo.FieldType; if (fieldType.Namespace.StartsWith("System") || fieldType.IsEnum) node.Text = node.Name + ": " + fieldValue; else DumpBranch(node.Nodes, fieldValue); } } }
private void DumpBranch(TreeNodeCollection nodes, object o) { Type type = o.GetType(); foreach (FieldInfo fieldInfo in type.GetFields()) { TreeNode node = nodes.GetOrCreate(fieldInfo.Name); object value = fieldInfo.GetValue(o); DumpValue(fieldInfo.FieldType, node, value); } foreach (PropertyInfo propertyInfo in type.GetProperties()) { TreeNode node = nodes.GetOrCreate(propertyInfo.Name); object value = propertyInfo.GetValue(o, null); DumpValue(propertyInfo.PropertyType, node, value); } }